
结构型:适配器模式
概述 通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。 在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了...
概述 通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。 在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了...
概述 一般有两种方式可以实现给一个类或对象增加行为: 继承机制 关联机制 继承机制 使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。 关联机制 即将一个类的对...
概述 当用户对象之间存在很强的关联性时,会有以下问题: 系统结构负责 对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。 对象的可重用性差 由于一个对象和其他对象具有很强的关联,若没有其他对象的支持,一个对象很难被另一个...
语言类 volatile 易变性 所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。 “不可优化”特性 volatile告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,...
概述 对于集合对象而言,肯定会涉及到对集合的添加和删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作放在集合对象中,但这样的话,集合对象既承担太多的责任了。 面向对象设计原则中有一条就是单一职责原则,所有我们要尽可能地分离这些职责,用不同的类取承担不同的责任,迭代...
概述 完成一项任务或事情,往往会有多种方法,而每一个方法可以称之为一个策略。而策略的选择,往往需要根据实际的环境或者条件的不同而做出不同的选择。 定义 定义一系列算法,将每一个算法封装起来,并让它们可以相互代替。 策略模式让算法独立于使用它的客户而变化。 角色 Context: ...
简述 最长公共子序列算法思想,令 X=< x1,x2,...xm > Y=<y1,y2,...yn> 为两个序列, Z=<z1,z2,...zk>为X和Y的某一个最长公共子序列: 如果 xm=yn,则zk=xm=yn,且Z(k-1)是X(m-1...
信号系统及作用 系统信号是系统与进程之间交流的语法,系统中所有的信号如下(可用kill -l列出): 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIG...
工作控制 赋予使用者操控进程执行过程的机制,称为工作控制 工作控制过程中常用到的命令有: jobs fg bg 可以执行的操作有: ctrl+z 暂停进程 bg 将进程置为后台进程 ctrl+c 停止进程 fg 将进程置为前台进程 进程替换 通过进程替换我们可以把一个进程的标准输...
shopt支持的bash选项含义 使用shopt -p可以列出所有的bash选项以及开关状态. nocasematch bash在case结构的样式对比时忽略大小写的开关. nounset 打开该选项的情况下,所有变量要先声明才能被使用. cdable_vars 如果给cd内置命...