2017年11月2日
摘要: 享元模式设计原则:无常用场景:一些状态相同的对象被大量的重复使用使用概率:90%复杂度:中变化点:无选择关键点:被共享的对象是否可以将外部状态提取出来逆鳞:没有将外部状态提取完全主要思想:其实就是共享模式开局创建n多同一个类实例,用一定的方法管理这些实例,当我们要用时,通过管理类去获取实例不用平凡的初始化销毁实例等场景 数据连接池,线程池等等 public class MyThreadPool ... 阅读全文
posted @ 2017-11-02 16:54 zjj911 阅读(150) 评论(0) 推荐(0)
摘要: 组合模式设计原则:遵循依赖倒置、开闭原则,破坏接口隔离常用场景:当有一个结构可以组合成树形结构,且需要向客户端提供一致的操作接口,使得客户端操作忽略简单元素与复杂元素使用概率:30%复杂度:中变化点:节点的数量选择关键点:对外提供一致操作接口的结构是否可转化为树形结构逆鳞:结构不稳定或结构中的节点有递归关系主要思想:体现部分与整体的层次结构一般都持有多个本类型的其它对象实例 常见的就是树形结构 ... 阅读全文
posted @ 2017-11-02 16:41 zjj911 阅读(146) 评论(0) 推荐(0)
摘要: 桥接模式设计原则:遵循单一职责、迪米特、开闭原则,体现功能复用常用场景:一个对象有多个维度的变化,需要将这些维度抽离出来,让其独立变化使用概率:20%复杂度:中高变化点:维度的扩展与增加选择关键点:是否可以将对象拆分成多个不相关的维度逆鳞:无主要思想:桥接类 实际也相当于一个组合类,该类持有不同接口或抽象类的对象,使用时赋予不同的子类说是桥就是一个连接比如 接口1 实现类11 实现类12 ... 阅读全文
posted @ 2017-11-02 16:23 zjj911 阅读(187) 评论(1) 推荐(1)
摘要: 外观模式设计原则:遵循迪米特常用场景:一个子系统需要对外提供服务使用概率:60%复杂度:中变化点:无选择关键点:子系统对外提供服务是否需要依赖很多的类逆鳞:子系统对外提供的服务的变化或子系统本身的不稳定相关设计模式中介者模式:二者都是为了处理复杂的耦合关系,不同的是外观模式处理的是类之间复杂的依赖关系,中介者模式处理的是对象之间复杂的交互关系主要思想把多个类的调用简化集中到一个类中,完成一个完整的... 阅读全文
posted @ 2017-11-02 16:09 zjj911 阅读(144) 评论(0) 推荐(0)
摘要: 代理模式设计原则:体现功能复用常用场景:需要修改或屏蔽某一个或若干个类的部分功能,复用另外一部分功能,可使用静态代理,若是需要拦截一批类中的某些方法,在方法的前后插入一些一致的操作,假设这些类有一致的接口,可使用JDK的动态代理,否则可使用cglib使用概率:99.99999%复杂度:中高变化点:静态代理没有变化点,动态代理的变化点为具有相同切入点的类选择关键点:静态代理选择的关键点是是否要复用被... 阅读全文
posted @ 2017-11-02 15:55 zjj911 阅读(155) 评论(0) 推荐(0)
摘要: 装饰模式设计原则:遵循迪米特、单一职责、开闭原则,破坏里氏替换,体现功能复用常用场景:一个类需要动态的添加功能,且这些功能可以相互叠加使用概率:99.99999%复杂度:中变化点:动态添加的功能或者说装饰器选择关键点:添加的功能是否需要动态组装逆鳞:无主要思想:创建装饰类继承或实现 需要被装饰类相同的父类或接口持有被装饰类实例调用被装饰类方法在前后可增加功能和代理模式的区别在于,理论上装饰模式不控... 阅读全文
posted @ 2017-11-02 15:52 zjj911 阅读(140) 评论(0) 推荐(0)
摘要: 适配器模式设计原则:遵循开闭原则、体现功能复用常用场景:需要使用一个类的功能,但是该类的接口不符合使用场合要求的接口,可使用定制适配器,又或者是有一个接口定义的行为过多,则可以定义一个缺省适配器,让子类选择性的覆盖适配器的方法使用概率:40%复杂度:中变化点:无选择关键点:定制适配器的选择关键点在于是否有更加优良的替代方案,缺省适配器的选择关键点在于接口中的方法是否可以不全部提供,且都有缺省方案逆... 阅读全文
posted @ 2017-11-02 12:12 zjj911 阅读(163) 评论(0) 推荐(0)