摘要: 1 基础知识 定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖(观察者)都会收到通知并更新。 本质:触发联动 使用场景:关联行为场景,建立一套触发机制。 (1)当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化那么就可以 阅读全文
posted @ 2019-08-14 16:24 windy杨树 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 1 阅读全文
posted @ 2019-08-14 16:19 windy杨树 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:定义了算法家族,分别封装起来,让他们可以相互替换,此模式让算法的变化不会影响到使用算法的用户(应用层)。特征:可以替换掉大量的if else语句 本质:分离算法,选择实现。 使用场景: (1)出现有许多相关的类,仅仅是行为有差别的情况下,可以使用策略模式来使用多 个行为中的一个来 阅读全文
posted @ 2019-08-14 15:47 windy杨树 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示 使用场景:访问一个集合对象的内容而无需暴露它的内部表示;为遍历不同的集合结构提供一个统一的接口 优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历 阅读全文
posted @ 2019-08-14 15:32 windy杨树 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:定义了一个算法的骨架并允许子类为一个或多个步骤提供实现。特征:模板方法使得子类可以在不改变算法结构的前提下重新定义某些步骤。 使用场景: (1)需要固定定义算法骨架,实现一个算法的不变的部分,并把可变的行为留给子类来实现的情况。 (2)n各个子类中具有公共行为,应该抽取出来,集中 阅读全文
posted @ 2019-08-14 12:46 windy杨树 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:将抽象部分与它的具体实现部分分离,使得它们都可以独立变化。特征:通过组合的方式建立两个之间的联系而不是继承。 使用场景:抽象和具体实现之间增加更多的灵活性;一个类存在两个(多个)独立变化的维度,且这两个(多个)维度需要独立扩展即抽象和具体实现独立扩展;不希望使用继承或因多层继承导 阅读全文
posted @ 2019-08-14 12:16 windy杨树 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:将对象组合成树形结构以表示“部分-整体”的层次结构。特征:组合模式使得客户端对单个对象和组合对象保持一致的方式处理。 本质:统一叶子对象和组合对象。 目的:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。 使用场景:希望客户端可以忽略组合对象与单个对象的 阅读全文
posted @ 2019-08-14 12:07 windy杨树 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:提供了减少对象数量从而改善应用所需的对象结构的方式。特征:运用共享技术有效支持大量细粒度的对象。 本质:分离与共享。 使用场景: (1)如果一个应用程序使用了大量的细粒度对象,可以使用享元模式来减少对象数量。如果由于使用大量的对象,造成很大的存储开销,可以使用享元模式来减少对象数 阅读全文
posted @ 2019-08-14 10:57 windy杨树 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 1 基础知识 定义:将一个类的接口(被适配者)转换成客户期望的另一个接口(目标)。特征:使原本接口不兼容的类可以一起工作。 本质:转换匹配,复用功能。把不兼容的接口转换为客户端期望的样子从而实现功能的复用。 使用场景:已经存在的类,它的方法(接口)和需求不匹配时的解决方案。注意适配器模式不是软件设计 阅读全文
posted @ 2019-08-14 09:58 windy杨树 阅读(297) 评论(0) 推荐(0) 编辑