摘要:
介绍 概念:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 应用场景:统一处理器的入口,由一个公共的入口来执行各种各样的请求 好处:扩展方便,入口统一 代码: //处理器的接口定义 package note.com.Command; 阅读全文
摘要:
介绍 概念:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 应用场景:统一处理器的入口,由一个公共的入口来执行各种各样的请求 好处:扩展方便,入口统一 代码: //处理器的接口定义 package note.com.Command; 阅读全文
摘要:
介绍 概念:定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通知并被自动更新。 应用场景:例如新闻订阅模式,邮件订阅等,客户端是观察者,新闻发布平台是被观察者,最重要的一点是被观察者控制着主动权. 注意区分的是:和时下的新闻APP并不相同,现在新闻APP采 阅读全文
摘要:
介绍 概念:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 应用场景:需要保存某个对象的某个时间的状态,如游戏的暂停,存档,恢复功能. 如果把数据库与实体关联起来了,也可以说数据库是这个对象的备忘录. 接来下实现一个游戏存档与读 阅读全文
摘要:
介绍 概念:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 应用场景:由模板定义统一的公共逻辑,公共入口,子类定义不同的实现.好处:统一了公共部分,父类(模板)控制了子类的流程,子类只能定义规定内的逻 阅读全文
摘要:
介绍 概念:运用共享技术有效地支持大量细粒度的对象。 应用场景:项目中某个类需要产生大量的对象,其中对象中的属性创建占用了大量的内存,如果这些属性对象可以被公用,那么可以利用享元模式把他们指向同一个地址. 这让我想起了字符串常量池的做法. 那么我们就用例子模仿一个字符串存储的逻辑. 代码: //自创 阅读全文
摘要:
介绍 意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 使用场景:当一个接口中有多个方法定义,它的方法有多种有不同的实现,为了避免在子类中重复的定义相同的方法. 代码: //剥离功能1接口 package note.com.bridge; /** * 颜色接口 * @author lxz 阅读全文
摘要:
介绍 意图:动态地给一个对象添加一些额外的职责。就增加功能来说, D e c o r a t o r模式相比生成子类更为灵活。 使用场景:处理规则可以任意组装的时候 结构图: 代码: //过滤功能接口 package note.com.decorator; public interface Deal 阅读全文
摘要:
介绍 意图:将对象组合成树形结构以表示“部分 -整体”的层次结构。 C o m p o s i t e使得用户对单个对象和组合对象的使用具有一致性。 适用性:1,你想表示对象的部分 -整体层次结构。 2,你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 应用场景:树形结 阅读全文
摘要:
介绍 意图:将一个类的接口转换成客户希望的另外一个接口。 A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 别名:包装器 Wrapper 动机:有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。 应用场景:需要使 阅读全文
摘要:
介绍 概念:为其他对象提供一种代理以控制对这个对象的访问。 使用场景:增加一个对象操作的访问控制,如根据权限判断用户是否能执行某个方法. 另一个应用是延迟加载,比如图片的对象,直到真正改变图片文件时才真正加载. 一个带访问控制的代理例子: 代码: //真正的执行对象 package note.com 阅读全文
|