设计模式
疯狂翻滚的石头
这个作者很懒,什么都没留下…
展开
-
Template Method(模式方法)
Template Method(模式方法) 行为型 类 1Intent_意图2在一个方法中定义一个算法的骨架 ,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤Motivation_动机3确保算法的结构保持不变,同时由子类提供部分实现Applicability_适用性4在算法结构部分通用的情况Structure_结构5Parti...原创 2020-03-05 19:50:00 · 186 阅读 · 0 评论 -
Visitor(访问者)
Visitor(访问者) 行为型 对象 1Intent_意图2封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变Motivation_动机3解决稳定的数据结构和易变的操作耦合问题Applicability_适用性4当想要为一个对象的组合增加新的能力,且封装并不重要时,使用访问者模式Structure_结构5Particip...原创 2020-03-05 17:37:07 · 236 阅读 · 0 评论 -
Strategy(策略)
Strategy(策略) 行为型 对象 1Intent_意图2定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户Motivation_动机3对算法进行包装,将使用算法的责任和算法本身分割开,委派给不同的对象管理,使得算法可以在不影响到客户的情况下发生变化Applicability_适用性4封装可以互换的行为,并使用委托来决定要使用哪一个St...原创 2020-03-05 16:02:07 · 672 阅读 · 0 评论 -
State(状态)
State(状态) 行为型 对象 1Intent_意图2允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类Motivation_动机3对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为Applicability_适用性4代码中包含大量与对象状态相关的条件语句Structure_结构5Participants_参与者6Context(...原创 2020-03-04 15:39:38 · 1235 阅读 · 0 评论 -
Observer(观察者)
Observer(观察者) 行为型 对象 1Intent_意图2定义对象间的一种一对多的依赖关系,当一个对象的状态发生时,所有依赖于它的对象都得到通知并被自动更新Motivation_动机3一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作Applicability_适用性4一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对...原创 2020-03-03 23:18:09 · 271 阅读 · 0 评论 -
Memento(备忘录)
Memento(备忘录) 行为型 对象 1Intent_意图2在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态Motivation_动机3备忘录对象是一个用来存储另一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭...原创 2020-03-02 17:32:46 · 158 阅读 · 0 评论 -
Mediator(中介者)
Mediator(中介者) 行为型 对象 1Intent_意图2包装一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合Motivation_动机3如果对象与对象之间存在大量的关联关系,将会导致系统的结构变得复杂,若一个对象发生改变,与之相关联的对象,必须同时做出相应的处理Applicability_适用性4多个类相互耦合,形成了网状结构,将网状结构分...原创 2019-12-17 18:19:43 · 107 阅读 · 0 评论 -
Iterator(迭代器)
Iterator(迭代器) 行为型 对象 1Intent_意图2提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示Motivation_动机3用同一种方法遍历包含不同类型数据的整合对象Applicability_适用性4遍历 一个聚合对象Structure_结构5Participants_参与者6Iterator(抽象迭代器) 定义访问和遍历聚合元素的接...原创 2019-12-11 18:12:10 · 178 阅读 · 0 评论 -
Interpreter(解释器)
Interpreter(解释器) 行为型 类 1Intent_意图2给定一个语言,定义它的方法表示 ,并定义一个解释器,这个解释器使用该标识来解释语言中的句子Motivation_动机3对于一些固定方法构建一个解释句子的解释器Applicability_适用性4当某种特定类型的问题发性频率足够高,就可值得将该问题的各个实例表述为一个简单语言中的句子。去构建一个解释器,该解释器通过...原创 2019-12-05 23:17:50 · 936 阅读 · 0 评论 -
Command(命令)
Command(命令) 行为型 对象 1Intent_意图2将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化期他对象。命令模式也可以支持撤销操作Motivation_动机3行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种设计就无法抵御变化的紧耦合Applicability_适用性4对行为进行“记...原创 2019-11-28 16:09:33 · 882 阅读 · 0 评论 -
Chain of Reponsibility(责任链)
Chain of Reponsibility(责任链) 行为型 对象 1Intent_意图2避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止Motivation_动机3当有很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户并不...原创 2019-11-27 22:08:20 · 171 阅读 · 0 评论 -
Proxy(代理)
Proxy(代理) 结构型 对象 1Intent_意图2为另一个对象提供一个替身或占位符以访问这个对象Motivation_动机3控制客户对对象的访问Applicability_适用性4控制 一个类的访问Structure_结构5Participants_参与者6Subject(抽象主题) 通过接口或抽象类声明真实主题和代理对象实现的业务方法RealSubject(...原创 2019-11-26 16:44:48 · 235 阅读 · 0 评论 -
Flyweight(享元)
Flyweight(享元) 结构型 对象 1Intent_意图2运用共享技术有效地支持大量粒度的对象Motivation_动机3在有大量对象时,有可能会造成内存溢出,把其中共同的部分抽象出来,如果有相同的业务请求,直接返回内存中已有的对象Applicability_适用性4系统中有大量对内存消耗量大的、状态大部分可以外部化的对象系统不依赖于这些对象身份,这些对象是不可分辨的对...原创 2019-11-25 20:33:42 · 141 阅读 · 0 评论 -
Facade(外观)
Facade(外观) 结构型 对象 1Intent_意图2提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用Motivation_动机3降低访问复杂系统的内部子系统时的复杂度,简化客户与之的接口Applicability_适用性41.客户不需要知道系统内部的复杂联系,整个系统只需提供一个“接待员”即可2.定义系统的入口Structure...原创 2019-11-25 15:24:36 · 130 阅读 · 0 评论 -
Decorator(装饰者)
Decorator(装饰者) 结构型 对象 1Intent_意图2动态地将责任附加到对象上。Motivation_动机3一般为了扩展类的功能,经常会选择使用继承的方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀Applicability_适用性41.在不想增加过多子类的情况下扩展类Structure_结构5Participants_参与者6Comp...原创 2019-11-22 17:24:06 · 128 阅读 · 0 评论 -
Composite(组合)
Composite(组合) 结构型 对象 1Intent_意图2允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合Motivation_动机3让树形结构更有弹性,便于能在树形结构中游走遍历Applicability_适用性41.想表示对象的“整体/部分”层次结构2.希望用户忽略组合与个体之间的不同,进行统一使用Structu...原创 2019-11-21 17:54:37 · 369 阅读 · 0 评论 -
Bridge(桥接)
Bridge(桥接) 结构型 对象 1Intent_意图2像抽象与实现分离,使其可以独立的变化Motivation_动机3提供抽象与实现之间的桥接,来实现解耦 ,使得实体类的功能能独立于接口实现类Applicability_适用性41.当一个类存在两个独立变化的维度,且两个维度都需要进行扩展2.当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加3.当一个系统需要在...原创 2019-11-21 15:41:53 · 205 阅读 · 0 评论 -
Adapter(适配器)
Adapter(适配器) 结构型 类 1Intent_意图2将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间Motivation_动机3将一个类的接口转换成客户希望的另一个接口,使得不兼容的接口变成兼容接口,让客户从实现的接口解耦Applicability_适用性41.需要使用现有的类,而此类的接口不符合系统的需求2.用于建立 一些彼此之间没有太...原创 2019-11-21 01:50:25 · 630 阅读 · 0 评论 -
Singleton(单件)
Singleton(单件) 创建型 对象 1Intent_意图2确保一个类只有一个实例,并提供全局访问点Motivation_动机3确保只有一个实例会被创建,并提供全局访问点,同时能规避全局变量带来的初始资源耗费,以及一个全局使用的类频繁的创建与销毁Applicability_适用性41.想控制实例数目,节省系统资源2.配置文件的读取3.连接池、线程池、缓存的统一管理调试St...原创 2019-11-20 17:28:18 · 193 阅读 · 0 评论 -
Prototype(原型)
Prototype(原型) 创建型 对象 1Intent_意图2通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象Motivation_动机3当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式Applicability_适用性41.当一个系统应该独立于它的产品创建,构成和表示时2.当要实例化的类是运行时刻指定时,例如:通过动态...原创 2019-11-20 15:50:54 · 231 阅读 · 0 评论 -
Factory Method(工厂模式)
Factory Method(工厂模式) 创建型 类 1Intent_意图2定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。Motivation_动机3将产品的”实现“从”使用“中解耦Applicability_适用性41.当一个类不知道它所必须创建的对象的类的时候2.当一个类希望由它的子类来指定它所创建的对象的时候3.当想将创建对象...原创 2019-11-20 02:18:41 · 192 阅读 · 0 评论 -
Builder(生成器)
Builder(生成器) 创建型 对象 1Intent_意图2封装一个产品的构造过程,并允许按步骤构造Motivation_动机3在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂对象Applicability_适用性41.需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性2.当构造步骤具有变更可能时3.需要生成的产品对象的属性相互依赖,需要指定其生成...原创 2019-11-19 19:35:54 · 778 阅读 · 0 评论 -
Abstract Factory(抽象工厂)
Abstract Factory(抽象工厂)1Intent2提供一个接口,用于创建相关或依赖对象的家庭,而不需要明确指定具体类Motivation3Applicability1.一个系统要独立于它的产品的创建、组合和表示时。2.一个系统要由多个产品系列中的一个来配置时。3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。4.当你提供一个产品类库,而只想显示它们的接口而不是实...原创 2019-11-18 22:36:57 · 237 阅读 · 0 评论 -
设计模式类目
创建型创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解耦Abstract Factory(抽象工厂)Builder(生成器)Factory Method(工厂方法)Prototype(原型)Singleton(单件)结构型结构型模式可以让你把类或对象组合到更大的结构中Adapter(适配器)Bridge(桥接)Composite(组合...原创 2019-11-18 18:02:07 · 225 阅读 · 0 评论