摘要:
迭代器模式设计原则:遵循迪米特常用场景:需要迭代访问一个聚合对象中的各个元素,且不暴露该聚合对象内部的表示使用概率:99.99999%复杂度:中变化点:聚合对象的种类选择关键点:客户端是否关心遍历的次序逆鳞:无相关设计模式访问者模式:二者都是迭代的访问一个聚合对象中的各个元素,不同的是,访问者模式中,扩展开放的部分在作用于对象的操作上,而迭代器模式中,扩展开放的部分在聚合对象的种类上,而且二者的实... 阅读全文
摘要:
观测者模式设计原则:遵循迪米特、开闭原则常用场景:需要将观察者与被观察者解耦或者是观察者的种类不确定使用概率:40%复杂度:中变化点:观察者的种类与个数选择关键点:观察者与被观察者是否是多对一的关系逆鳞:观察者之间有过多的细节依赖主要思想:其实比较简单,是发布-订阅形式的,就是类之间的关系,观察者与被观察者被观察者的属性变化了,那观察者就要随着改变,不过不是观察者一直监视着,而是被观察者主动通知现... 阅读全文
摘要:
模板方法模式设计原则:破坏里氏替换,体现功能复用常用场景:一批子类的功能有可提取的公共算法骨架使用概率:80%复杂度:中低变化点:算法骨架内各个步骤的具体实现选择关键点:算法骨架是否牢固逆鳞:无主要思想定义一个抽象类,在抽象类中定义一个主方法,比如是某个算法,或者要做的某件事,再定义一些抽象方法,这些抽象方法会在主方法中调用,这样主方法实际就相当于模板,其规定好了要做的这件事的所有步骤,而其中部分... 阅读全文
摘要:
策略模式设计原则:遵循单一职责、依赖倒置、迪米特、开闭原则常用场景:算法或者策略需要经常替换使用概率:60%复杂度:中变化点:策略的种类选择关键点:客户端是否依赖于某一个或若干个具体的策略逆鳞:无主要思想:实际就是简单的接口实现对外提供一套约定好的方法即接口,然后进行不同的实现一般使用在相差不大的一套算法中比如加减乘除 对外提供一个calculate方法,想用相应的计算则初始化相应算法实现类 ... 阅读全文