随笔分类 - Design Pattern/设计模式
摘要:职责链模式 chain of responsibility 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 动机 给多个对象处理一个请求的机会,从而解耦发送者和请求者。 从第一个对象开始,链中收到
阅读全文
摘要:行为型模式 涉及算法和对象间职责的分配,以及它们之间的通信方式,刻画了运行时难以跟踪的复杂控制流,它们将你的注意力从控制流转移到对象联系方式上来。 类行为型模式 使用继承机制在类间分配行为。 "模板模式(template method)" 一个算法的抽象定义,它逐步定义算法,每一步调用一个抽象操作,
阅读全文
摘要:结构型模式 涉及如何组合类和对象来获得更大的结构。 1. 结构型类模式: 采用继承机制来组合接口或实现,通常是静态的,类继承方式。 2. 结构型对象模式: 描述如何对对象进行组合,从而获得新功能的一些方法。 相关设计模式 Composite模式(组合模式) 描述如何构造一个类层次式的结构,这一结构由
阅读全文
摘要:意图 将抽象部分与它的实现部分分离,使它们都可以独立的变化。 动机 当一个抽象类有多个实现时,通常用继承来协调它们。但是继承机制将抽象和实现固定,难以对抽象部分和实现部分独立地进行修改、扩充和重用。 此时通过一个桥接类,并且桥接类的操作都是抽象定义的,这就将抽象和实现进行了部分分离,它在抽象与实现之
阅读全文
摘要:组合模式/composite模式/对象结构型 意图 将对象组合成树形结构以表示“整体——部分”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 动机 Composite模式,关键是一个抽象类(组件),既可以代表对象(叶子节点),又可以代表组合(中间节点)。使用组合模式,我
阅读全文
摘要:意图 又名:游标(Cursor); 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 动机 一个聚合对象,提供访问元素的方法,而有不暴露它的内部结构。如list,将对列表的访问和遍历从列表对象中分离出来并放入一个迭代器(iterator)中。迭代器定义了一个访问该列表元素的接
阅读全文
摘要:flyweight 享元模式(对象结构型) Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 意图 运用共享技术有效地支持大量细粒度的对象。关键
阅读全文
摘要:将类的接口转化为客户端希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作,别名Wrapper(包装器)。
适配器模式,最终改变一个已有对象的接口。
阅读全文
摘要:代理模式proxy 定义 为其他对象提供一种代理,并以控制对这个对象的访问。最简单的理解,买东西都是要去商店的,不会去工厂。 java实现三要素 proxy(代理)+subject(接口)+realSubject(实现类) 1. 定义一个接口 2. 代理类和实现类均实现1定义的接口 3. 代理类持有
阅读全文
摘要:装饰模式Decorator 定义 为对象动态的增加新的功能,实现要求装饰对象和被装饰对象实现同一接口或抽象类,装饰对象持有被装饰对象的实例。 java实现要点 1. 定义一个接口或抽象类,作为被装饰者的抽象 2. 对1定义的抽象,进行具体的实现,作为装饰者,装饰者的构造函数传入1的实例,并持有。 3
阅读全文
摘要:外观模式 为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式三要素(client facade subSystem) 1. 外观角色(facade),是模式的核心,他被客户client角色调用,知道各个子系统的功能。同时根据客
阅读全文
摘要:举个栗子 指挥官向士兵下达命令,士兵执行 实现代码如下: 代码问题 上诉代码是最基本的一个实现,存在问题: 1. Commander和Soldier高度耦合 2. 新增命令的话,要改动Commander类,扩展性不好(影响已有实现),不符合OCP原则 3. 指挥官指挥实现多条命令时,又要改Comma
阅读全文
摘要:模板模式 模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现。 几个要点,针对java: 1. 抽象父类(防止实例化),公共方法(public),规定好工作
阅读全文
摘要:工厂模式 普通工厂模式 原本需要new出来的对象,通过一个类的方法去搞定,Factory.build(parameter),类似这种。 多方法工厂模式 工厂类提供多种build方法,或者根据入参类型决定输出对象。 静态工厂方法 工厂的build方法为静态方法,直接调用,较为常用。 总体来说,工厂模式
阅读全文
摘要:Creational(创建模式) Abstract factory: 创建一组有关联的对象实例。这个模式在JDK中也是相当的常见,还有很多的framework例如Spring。我们很容易找到这样的实例。 java.util.Calendar getInstance() 抽象类,不可实例化,通过静态g
阅读全文
摘要:建造者模式 定义 用于简化复杂对象的创建 JDK中的建造者模式 java.lang.StringBuilder中的append()方法,每次调用后返回修改后的对象本身。 建造者模式和工厂模式的区别 建造者模式将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。 所以与工程模式的区别就是:工厂模
阅读全文
摘要:Java实现要点: 私有构造方法 线程安全(并发的考虑) 延迟加载(效率的考虑,对于较大的类在使用时在加载) 公有方法访问单一实例 常见单例模式代码及问题 推荐单例模式代码示例: 总结 synchronized关键字锁定的是对象,在用的时候,一定要在恰当的地方使用(注意需要使用锁的对象和过程,可能有
阅读全文
摘要:SOLID原则 单一职责原则(SRP) the single responsibility principle, 一个类只做一种类型的责任。 开闭原则(OCP) the open closed principle,对扩展开放,对修改关闭。 里氏代换原则(LSP) the liskov substit
阅读全文

浙公网安备 33010602011771号