![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
miaowugui
这个作者很懒,什么都没留下…
展开
-
创建型-工厂模式
工厂模式工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。如果对象的初始化的过程很长很复杂,放在构造器中是很危险的,就像很多鸡蛋放到一个篮子里。所以要把对象的创建过程抽象独立出来。工厂模式定义了一个创建对象的接口,但由于子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到了子类。工厂模式分类1. 简单工厂模式(Simple Factory) 2. 工...原创 2015-04-11 23:20:45 · 236 阅读 · 0 评论 -
行为型-模版模式
模版模式定义定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。模版模式其实很简单,就是一个抽象定义好公共的步骤,把一些单独的算法提取出来。让子类实现。1>模板模式定义了算法的步骤,把这些步骤的实现延迟到子类2>模板模式为我们提供了一个代码复用的技巧3>模板抽象类中可以定义具体方法、抽象方法和钩...原创 2015-04-16 10:30:17 · 67 阅读 · 0 评论 -
行为型-观察者模式
观察者模式(发布-订阅Subscribe>模式)定义定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它所有的依赖者都会收到通知并更新。UML 抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。抽象观察者角色:为所有具体的观...原创 2015-04-16 11:14:13 · 72 阅读 · 0 评论 -
行为型-命令模式
定义在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern) UML Command:定义命令的接口,声明执行的方...原创 2015-04-17 08:52:38 · 69 阅读 · 0 评论 -
行为型-迭代器模式
定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示java语言已经完整地实现了迭代器模式,Iterator翻译成汉语就是迭代器的意思。提到迭代器,首先它是与集合相关的,集合也叫聚集、容器等,我们可以将集合看成是一个可以包容对象的容器,例如List,Set,Map,甚至数组都可以叫做集合,而迭代器的作用就是把容器中的对象一个一个地遍历出来。UML抽象迭代...原创 2015-04-17 08:53:23 · 66 阅读 · 0 评论 -
行为型-责任链模式
定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 一个纯的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个:一是承担责任,而是把责任...原创 2015-04-17 08:53:56 · 94 阅读 · 0 评论 -
行为型-备忘录模式
定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态UML 1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。2.Memento(备忘录):负责存储Orig...原创 2015-04-17 08:55:14 · 55 阅读 · 0 评论 -
行为型-状态模式
定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。UML 上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来...原创 2015-04-19 22:20:31 · 141 阅读 · 0 评论 -
行为型-访问者模式
定义表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 UML 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。抽象元素类:接口或...原创 2015-04-22 15:20:03 · 71 阅读 · 0 评论 -
行为型-中介者模式
定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。UML 以上两个UML图,第一个是广义的中介者模式Mediator:中介者接口。在里面定义了各个同事之间相互交互所需要的方法,可以是公共的方法,如Change方法,也可以是小范围的交互方法。ConcreteMediator:具体的中介者实现对象...原创 2015-04-22 16:07:38 · 131 阅读 · 0 评论 -
行为型-解释器模式
定义给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。UML 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释器TerminalExpression和非终结符解释器NonterminalEx...原创 2015-04-22 17:23:43 · 53 阅读 · 0 评论 -
行为型模式比较
常见行为型模式有11种:CCIIMM(Chain of Responsibility职责链、Command命令、Interpreter解释器、Iterator迭代、Mediator中介者、Memento备忘录),OSSTV(Observer观察者、State状态、Strategy策略、Template Method模版方法、Visitor访问者)。 行为型模式设计到算法和对象间的职责分...原创 2015-04-23 14:23:25 · 210 阅读 · 0 评论 -
行为型-策略模式
策略模式定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。通常,策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该...原创 2015-04-16 10:28:26 · 67 阅读 · 0 评论 -
结构型模式比较
结构型模式概述 结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)。这些结构型模式,它们在某些方面具有很大的相似性,仔细推敲,侧重点却各有不同。 Adapter模式通过类的继承或者对象的组合侧重于转换已有的接口;Bridge模式通过将抽象和实现相分离,让它们可以分别独立的...原创 2015-04-16 09:54:29 · 396 阅读 · 0 评论 -
创建型模式比较
创建型模式的比较:单例模式和原型模式比较好比较,一个用来创建单例一个用来复制对象,但是工厂方法模式和抽象工厂模式还有建造者模式比较不好区分,工厂方法是生产一种产品,这个产品有不同类型,用的是继承的方式,子类型继承自同一父类型。但是抽象工厂用的是组合的方式生产一系列产品,工厂需要实例化,而建造者模式可能更注重细节,一个产品可能有不同的建造方法。导致产品的形态不一,生成顺序不一,但是产品的本质都是...原创 2015-04-11 23:21:35 · 70 阅读 · 0 评论 -
创建型-单例模式
单例模式定义在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 应用与实例单例模式...原创 2015-04-13 17:50:47 · 61 阅读 · 0 评论 -
创建型-建造者模式
建造者模式定义将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程(包括创建出的形...原创 2015-04-14 10:32:22 · 45 阅读 · 0 评论 -
创建型-原型模式
原型模式定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。浅克隆 对值类型的成员变量进行值的复制,对引用类型的成员变量只复制...原创 2015-04-14 11:27:57 · 55 阅读 · 0 评论 -
结构型-适配器模式
定义将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。说通俗点其实就是一个东西不适用的时候给它包裹一层让他能够适配使用又不改变他本身。 分类(1)类适配器:当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。 public interface Targe...原创 2015-04-14 16:50:49 · 78 阅读 · 0 评论 -
结构型-外观模式
定义外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 UMLFacade:这个外观类为子系统提供一个共同的对外接口Clients:客户对象通过一个外观接口读写子系统中各接口的数据资源。 实例1.比如一个家庭影院,我们需要看电影,肯需要先打开电视机,音响,调节灯光,炸爆米花,准备可乐等一系列的...原创 2015-04-14 17:46:25 · 138 阅读 · 0 评论 -
结构型-装饰者模式
装饰者模式定义动态地将责任附加到对象上,若要扩展功能功能装饰者提供了比继承更有弹性的替代方案。UML(1)抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。(2)具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。(3)装饰(Decorator)角色:持有一个构件(Component)对象的实例,并实现一个与抽象构...原创 2015-04-15 09:16:40 · 73 阅读 · 0 评论 -
结构型-代理模式
定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。UML 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。(最简单的比如打印日志)真实角色:实现抽象角色,定...原创 2015-04-15 11:29:09 · 47 阅读 · 0 评论 -
结构型-桥接模式
定义【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。抽象化:存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待【LISKOV94】。实现化:抽象化给出的具体实现,就是实现化。脱耦...原创 2015-04-15 16:06:29 · 83 阅读 · 0 评论 -
结构型-组合模式
定义 将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式...原创 2015-04-15 16:58:52 · 162 阅读 · 0 评论 -
结构型-享元模式
定义 享元模式以共享的方式高效的支持大量的细粒度对象。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。 内蕴状态存储在享元内部,不会随环境的改变而有所不同,是可以共享的 外...原创 2015-04-16 09:28:42 · 56 阅读 · 0 评论 -
设计模式总说
对于一个对设计模式还不是很熟练运用的初学者,读完了head first设计模式 这本书,觉得写的非常好,容易读懂掌握。下面是对设计模式的一个整理。 分类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观...原创 2015-04-23 15:44:01 · 92 阅读 · 0 评论