OOP思想:抽象、继承、多态、统一接口、功能最小化、对象只对自己负责
设计模式原则:“开-闭原则“,“优先使用组合”

对设计模式的一些总结:
外观模式:”将复杂的接口简单化“
最底层(最接近实现)的模式,其上层可以是桥接模式,可以是抽象工厂模式,甚至是最简单
的模板方法模式,甚至什么模式都没有,仅仅是简单的类封装或函数封装,但是它却是我们生活中实实在
在最常用的模式之一,它封装复杂的功能,向上展现简单的接口或方法。TerryLee常说外观模式是亡羊补牢,
我觉得还应该发挥我们的“拿来主义”,对我们有用的东西我们就毫不客气地拿来,使用外观模式加以利用。
适配式模式:“转换接口“
适配器模式和外观模式有很多相似的地方,两者都是用在最接近实现的层次,而且都是封装转换。
但适配器模式更注重于转换接口。
在实际使用中,我们不必拘泥于这两者的区别,这是很重要的。
抽象工厂模式:“系例化工厂生产系列化对象“
这是大家所认为最没有明显优点的模式了,从短期来看,它甚至把简单的问题复杂化了。
它屏蔽我们通常的new,将类的实例化封装起来,并延迟到工厂对象中,通过工厂的CreateInstance()
方法来管理。通常一个工厂只负责生产一种产品,所以的工厂和所以的产品都拥有统一的接口,
都通过抽象工厂或抽象产品来派生。
工厂方法有很好变种,但它们统一的特点就是,屏蔽了用户直接new对象,给库接口设计者提供了
切换对象的空间,当然,也可以由用户来选择工厂。
桥接模式:“将对象的变化部分分离开来,实现形态与变化的分离“
如果一个抽象的类存在多个变化部分,如形状和行为,采用传统派生的方法必须造成类爆炸现象。
桥接模式,将这两个变化部分分离,实现松耦合。
装饰模式:“对现有的接口进行包装,增加新的功能“
装饰模式和桥接模式、外观模式有相似的地方,它们都面向已有的接口,后两者的注重转换,而
装饰模式注重增加新功能。
模板方法模式:“提供抽象的基类接口“
最简单也是最常见的模式这一。如插件设计。
命令模式
命令模式有三个用法:
1 “OOP时代回调的替代,扩展性好“
回调实现了调用者也被调用者的分离,调用者不用关心被调用者(是否存在,在哪里)。但调用者
与被调用者需要函数形式的协商。
OOP时代,命令模式用来代替回调,调用者与被调用者需要类名及接口的协商。客户可以将派生的
类对象传递给调用者,由调用者在必要的时候调用对象的协商方法(Execute())。
特点:由于类可以派生,因而只要一个协商,就可以实现多个命令的回调,而更容易管理。传统回调
必须每一个都要协商。
2. “集中管理命令代码”
如菜单命令管理,client只需要将要执行的代码封装在Command对象,并以name-Command的方式,向
命令管理者注册,就可以在需要的时候以name的方式执行这段代码。
3. “以任务的方式下达命令“
命令执行者不需要知道命令的名字、类型,client下达命令对象,执行者无条件执行。
迭代器模式:“隐藏数据及Iteator的细节“
提供GetItemCount(), Move(n), MoveFirst(), MoveNext(), MovePrevs(), MoveLast()等方法来
访问迭代器数据。
观察者模式:“处理1:n的依赖变化关系”
将管理观察者的责任由client转移到了观察者本身。将被依赖者的变化,调用观察者的通知方法,
使观察者主动更新数据。这实现了用户与(依赖者和观察者)的解耦,增大了依赖者和观察者耦合
关系。
生成器/建造者模式:“Driver-Builder-对象”
举个例子来说明:
顾客去KFC买套餐,他把要求告诉收银员(Driver),收银员然后通告工作人员(Builder),
工作人员把食品(对象)按照需求收集过来(算法),交给收银员,然后由收银员交给顾客。
这和工厂模式有些相似,但是不同之处是一个工厂只生产一种产品,而且生产过程比较简单(new)。
建器者模式的侧重点是,由Driver选择不同的Builder,生产出较为复杂的产品。生产的过程对
Driver也是透明的。

单件模式:“保证只有一个实例“
getInstance()