回顾自己学习《大话设计模式》的旅程,有一种飘忽不定的感觉,单个进入一个模式,非常好理解,但随着模式的增多,越来越发现各个设计模式之间联系紧密,又有区别。于是慢慢学着总结……
模式名称 | 英文 | 举例 | 作用 |
简单工厂模式 | SimpleFactory | “加减乘除”运算工厂调用 | 工厂具体实例化方法,决定使用哪一个方法!(switch)具体实例类不影响其他 |
工厂方法模式 | Factory | 加减乘除 | 好的分工,就像一个公司依赖不同的机器执行不一样的操作 |
建造者模式 | Builder | 小人的画法(胖子和瘦子) | 有一个指导类来指导操作顺序具体实现,避免错误发生 |
抽象工厂模式 | Ifactory | 基本数据库使用(数据库分类型) | 通过抽象工厂解除依赖(解耦) |
装饰模式 | Decorator | 对人的装饰过程 | 动态给一个对象添加方法 |
代理模式 | Proxy | 通过第三者送礼物 | 远程代理,虚拟代理,安全代理,智能指引等隐藏真实操作者 |
外观模式 | Fa?ade | 投资基金代替各种股票 | 为外界定义接口,用户不用关系具体实现哪个类的方法,只要知道汇总类的方法 |
组合模式 | Component | 子公司和部门添加 | 保证组合对象与添加的对象保持一致,不断增加 |
桥接模式 | Bridge | 手机按照软件和品牌的分类 | 实现系统可能多角度分类,降低耦合 |
享元模式 | Flyweight | 网站共享代码 | 运用共享技术有效的支持大量细粒度的对象 |
策略模式 | Strategy | 商场收银采用的活动策略(如打折) | 定义算法家族(可与简单工厂模式相结合) |
模板方法模式 | Template | 问题试卷的提出 | 不变行为搬移到超类,去除掉重复 |
观察者模式 | Observers | 观察老板回来 | 去除掉两个联系紧密类之间的耦合(与委托一起起作用) |
状态模式 | State | 小菜1天工作状态 | 将状态逻辑分布到子类之间,减少相互间依赖,一个对象的行为取决于他的状态 |
备忘录模式 | Memento | 保存游戏进度 | 恢复一个状态前的某一状态,撤销功能,复原操作 |
迭代器模式 | Iterator | 客车售票员收票过程 | 每次都遍历每一个类成员,不容易丢失,但操作时间长 |
命令模式 | Command | 小摊和饭店烤羊肉串的区别 | 设计命令队列,将命令计入日志,可实现撤销 |
职责链模式 | COR | 加薪 | 避免发送者和接受者之间的耦合关系(像筛子一样) |
中介者模式 | Meditor | 安理会 | 减少了各个Colleague之间的耦合,把对象如何协作进行了抽象 |
解释器模式 | Interprter | 音符的输出 | 提供一个翻译对应表,得到对应的翻译结果 |
原则分类 | 简称 | 概念 |
单一职责原则 | SRP | 就一个类而言,应该仅有一个引起该类变化的原因,多原则必将导致效率下降 |
开放封闭原则 | OCP | 软件实体可以扩展不可以修改(软件更新),许进不许改 |
依赖倒转原则 | DIP | 细节依赖抽象(针对接口编程),可以不断给接口添加实例类,但不能为了类添加接口 |
里氏代换原则 | LSP | 子类可替换掉父类(继承全部非private属性和方法),结果完全不受影响 |
迪米特法则 | LoD | 类的结构设计,每个成员应该尽量降低访问权限,降低耦合性 |
合成复用原则 | CARP | 能够采用简单聚合,组合关系时不要用继承(继承的耦合程度很高) |
原文地址:http://blog.csdn.net/whp15369657805/article/details/41946005