![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
fomin_zhu
8年开发经验,精通Java后端和Android移动端
展开
-
解释器模式(Interpreter)
1、概念解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,属于行为型模式。但其在实际的系统开发中使用的很少,因为他会引起效率、性能以及维护等问题![解释器模式](https://img-blog.csdnimg.cn/2018112910503821.jpg?x-oss-process=image/watermark,type_ZmFuZ3...原创 2018-11-29 10:51:07 · 938 阅读 · 0 评论 -
原型模式
1、概念原型模式一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。在实际应用中,原型模式很少单独出现。经常与其他模式混用,他的原型类Prototype也常用抽象类来替代。2、模式结构抽象原型(Prototype)角色:是一个抽象角色,此角色给出所有的具体原型类所需的接口 具体原型(Concrete Prototype)角色:被复制的对象,此角色需...原创 2018-10-24 10:51:00 · 853 阅读 · 0 评论 -
建造者模式
1、概念建造者模式可以叫生成器模式,属于创建型模式,它是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。2、模式结构Builder:为创建一个Product对象的各个部件指定抽象接口 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,提供一个检索产...原创 2018-10-23 10:52:00 · 830 阅读 · 0 评论 -
工厂方法模式
1、概念工厂方法模式是创建型模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。2、模式结构ILog:抽象产品,是具体产品继承的父类或者是实现的接口。 FileLog/DatabaseLog:具体产品,具体工厂角色所创建的对象就是此角色的实例。 ILogFactory:抽象工厂,是具体工厂角色必须实现的接口或者必须继承的父类。 FileLo...原创 2018-10-20 12:21:00 · 864 阅读 · 0 评论 -
简单工厂模式
1、概念简单工厂模式属于创建型模式,但不属于23种GOF设计模式之一,称为静态工厂方法(Static Factory Method)模式,可以根据参数的不同返回不同的类实例。2、模式结构Factory(工厂角色):负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 Product(抽象产品角色):负责描述所有实例所共有的公共接口。 Co...原创 2018-10-17 10:04:00 · 825 阅读 · 0 评论 -
抽象工厂模式
1、概述抽象工厂模式是一种创建型模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。2、模式结构抽象工厂(IFactory):用于声明生成抽象产品的方法 具体工厂(SqlServerFactory和MySqlFactory):实现了抽象工厂声明的生...原创 2018-10-12 22:36:00 · 818 阅读 · 0 评论 -
观察者模式
1、概述观察者模式是一种对象行为型模式,定义了一对多的依赖关系,让多个观察者对象同时监听某个主题对象。这个主题对象会通知所有的观察者对象,使他们自动更新自己。它关键对象是观察目标和观察者,每个观察者都将即时更新自己的状态,以与目标状态同步,这种交互也称为发布-订阅(publishsubscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅它并接收...原创 2018-09-29 09:53:00 · 836 阅读 · 0 评论 -
单列模式
1、什么是单列模式单列模式(Singleton)保证一个类仅有一个实例,并提供一个访问的全局访问点,这种类型的设计模式属于创建型模式。在开发中,会经常遇到一个全局使用的类频繁地创建与销毁,这会非常浪费系统的内存资源,而且容易导致错误甚至一定会产生错误,所以我们单例模式所期待的目标或者说使用它的目的,是为了尽可能的节约内存空间,减少无谓的GC消耗,并且使应用可以正常运作。2、实现方式2....原创 2018-09-18 23:18:00 · 879 阅读 · 0 评论 -
设计模式概论
1、概论简介 设计模式(Design Pattern)是设计过程中可以反复使用、可以解决特定问题的设计方法。目的: 使用目的为了代码的可重用性、可读性、可靠性。项目中合理地运用设计莫斯可以完美的解决很多问题,每种模式都描述了项目中重复发生的问题,以及解决该问题的核心解决方案。2、设计原则面向对象有7个设计原则:单一职责原则 (Single Responsiblity Princ...原创 2018-09-18 22:39:00 · 66 阅读 · 0 评论 -
备忘录模式(Memento)
1、概念备忘录模式在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便恢复到原先保存的状态,属于行为型模式。2、模式结构发起人角色(Originator):记录当前时刻的内部状态,负责定义哪些属于备份的状态,负责创建和恢复备忘录数据备忘录角色(Memento):负责存储Originator发起人对象的内部状态 ,在需要的时候提供发起人需要的内部状态备忘录管理...原创 2018-11-28 10:25:26 · 863 阅读 · 0 评论 -
职责链模式(Chain of Responsibility)
1、概念职责链模式为为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它,属于行为型模式。2、模式结构抽象处理者(Handler)角色:定义出一个处理请求的接口;如果需要,接口可以定义 出一个方法以设定和返回对下家的引用具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请...原创 2018-12-03 10:30:56 · 655 阅读 · 0 评论 -
适配器模式
1、概述适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,属于结构型模式。2、模式结构Target:目标抽象类,定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类 Adapter:适配器类,可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配 Adaptee:适配者类,定义了一...原创 2018-10-27 13:29:00 · 818 阅读 · 0 评论 -
桥接模式(Bridge)
1、概念桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化,属于结构性模式的一种。2、模式结构Abstraction(抽象类):定义抽象接口,拥有一个Implementor类型的对象引用,它与 Implementor 之间具有关联关系 RefinedAbstraction(扩充抽象类):扩展Abstraction中的接口定义,实现了在 Abstraction 中声明的抽象业务方...原创 2018-11-05 10:55:00 · 844 阅读 · 0 评论 -
装饰模式(Decorator)
1、概念装饰模式动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活,属于结构性模式一种。2、模式结构抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。 具体组件角色(ConcreteComponent) :被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责。 抽象装饰器...原创 2018-11-09 11:06:00 · 853 阅读 · 0 评论 -
状态模式(State)
1、概念状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类,属于行为型模式。2、模式结构环境角色(Context):定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态角色(State):定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具体状态角色(Concrete...原创 2018-11-30 11:49:30 · 4099 阅读 · 0 评论 -
中介者模式(Mediator)
1、概念中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,属于对象行为型模式一种。2、模式结构Mediator: 抽象中介者,定义一个接口,该接口用于与各同事对象之间进行通信 ConcreteMediator: 具体中介者,抽象中介者的子类,通过协调各个同事对象来实现协作行为,它维持了对各个同事对象...原创 2018-11-26 10:32:00 · 911 阅读 · 0 评论 -
访问者模式(Visitor)
1、概念访问者模式封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作,属于行为型模式一种。2、模式结构Visitor(抽象访问者):抽象访问者为对象结构中每一个具体元素类ConcreteElement声明一个访问操作,从这个操作的名称或参数类型可以清楚知道需要访问的具体元素的类型,具体访问者则需要实现这些操作方法,定义对这些元素的...原创 2018-11-23 11:41:00 · 878 阅读 · 0 评论 -
迭代器模式(Iterator)
1、概念迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示,属于行为模式的一种2、模式结构抽象迭代器(Iterator):此抽象角色定义出遍历元素所需的接口 具体迭代器(ConcreteIterator):此角色实现了Iterator接口,并保持迭代过程中的游标位置 抽象容器(Aggregate):容器角色负责提供创建具体迭代器角色的接口,必然提供一...原创 2018-11-21 10:59:00 · 874 阅读 · 0 评论 -
命令模式(Command)
1、概念命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作,属于行为型模式的一种。2、模式结构Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。 ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现 Invoke...原创 2018-11-20 10:54:00 · 931 阅读 · 0 评论 -
模版方法模式(Template Method)
1、概念在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。2、模式结构抽象类(AbstractClass):定义一组基本方法供子类实现,定义并实现组合了基本方法的模板方法 具体子类 (ConcreteClass): 实现原语操作以完成算法中...原创 2018-11-19 10:49:00 · 874 阅读 · 0 评论 -
代理模式(Proxy)
1、概念代理模式为其他对象提供一个代理以控制对这个对象的访问,属于结构性模式。从代码的角度来分,代理可以分为两种:一种是静态代理,另一种是动态代理。静态代理就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。动态代理类的源码是在程序运行期间根据反射等机制动态的生成,所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定。2、模式结构Su...原创 2018-11-15 11:27:00 · 839 阅读 · 0 评论 -
享元模式(Flyweight)
1、概念享元模式是运用共享技术有效地支持大量细粒度的对象,系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用,属于结构性模式。2、模式结构Flyweight: 抽象享元类,所有具体享元类的超类或者接口,通过这个接口,Flyweight可以接受并作用于外部专题 ConcreteFlyweight: 具体享元类,指定内部状态,为内部状态增加存储空间 Unshar...原创 2018-11-14 10:50:00 · 659 阅读 · 0 评论 -
外观模式(Facade)
1、概念外观模式是外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,属于对象结构型模式。2、模式结构Facade(Controller): 外观角色,客户端通过操作外观角色从而达到控制子系统角色的目的。对于客户端来说,外观角色好比一道屏障,对客户端屏蔽了子系统的具体实现 Sub...原创 2018-11-13 15:58:00 · 894 阅读 · 0 评论 -
组合模式(Composite)
1、概念组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性,属于结构性模式。2、模式结构Component:组合中的对象声明接口,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component子部件 Leaf:叶子对象,叶子结点没有子结点 Composite:容器对象,定义有枝节点行为,用来存储子部件,在Compo...原创 2018-11-12 11:03:00 · 934 阅读 · 0 评论 -
策略模式(Strategy)
1、概念策略模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。2、模式结构环境类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。抽象策略类:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共的代码,此时,策略模式看上去更像是模版方法模式。具体策略类:具体策略角色通常由一组...原创 2019-01-18 17:21:13 · 833 阅读 · 0 评论