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