![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GOF设计模式
文章平均质量分 77
叮咚火柴
这个作者很懒,什么都没留下…
展开
-
单例模式(Singleton Pattern)
什么是单例模式?单例模式(Singleton Pattern)是Java中最简单的设计模式之一。原创 2017-12-01 21:31:31 · 213 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
什么是迭代器模式?迭代器模式(Iterator Pattern),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器模式属于行为型模式。结构聚合对象:存储数据。迭代器:遍历数据。开发中常见的场景JDK内置的迭代器(List/Set)。举例实现正向遍历的迭代器。类图代码聚合对象package ...原创 2018-02-27 13:50:17 · 187 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
什么是中介者模式?中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。核心如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系极为复杂,这些对象称为“同事对象”。我们可以引入一个中介者对象,使各个同事对象...原创 2018-02-27 13:56:02 · 203 阅读 · 0 评论 -
命令模式(Command Pattern)
什么是命令模式?在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。 命令模式将一个请求封装成一个对象,从而使我们可用不同的请求...原创 2018-02-27 13:59:54 · 175 阅读 · 0 评论 -
解释器模式(Interpreter Pattern)
什么是解释器模式?解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。 - 用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。 - 当我们需要开发一种新的语言时,可以考虑使用解释器模式。 - 尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用Jruby,Groovy,java的js引...原创 2018-02-27 14:02:09 · 154 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
什么是访问者模式?模式动机对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。定义表示一个作用与某对象中各个元素的操作,它使我们可以在不改变元素类的前提下定义作用于这些元素的新操作。属于行为型模式。开发中的场景XML文档解析器设计编译器的设计复...原创 2018-02-27 14:03:25 · 185 阅读 · 0 评论 -
策略模式(Strategy Pattern)
什么是策略模式?策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法,并且由客户端决定调用那个算法。这种类型的设计模式属于行为型模式。本质分离算法,选择实现。开发中常见的场景Javase的GUI编程中,布局管理。Spring框架中,Resource接口,资源访问策略。javax.serv...原创 2018-02-27 14:06:17 · 359 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)
什么是模板方法模式?模板方法模式是编程中经常用得到的模式。它定义了一个操作的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。核心处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用模板方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类定义号,具...原创 2018-02-27 14:08:44 · 196 阅读 · 0 评论 -
状态模式(State Pattern)
什么是状态模式?当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 这种类型的设计模式属于行为型模式。核心用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。结构Context环境类 环境...原创 2018-02-27 14:13:20 · 211 阅读 · 0 评论 -
观察者模式(Observer Pattern)
什么是观察者模式?观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。观察者模式属于行为型模式。...原创 2018-02-27 14:17:43 · 204 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Pattern)
什么是责任链模式?责任链模式(Chain of Responsibility Pattern),属于行为型模式。将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一对象。 责任链模式涉及到的角色如下所示: - 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义 出一个方...原创 2018-02-27 13:45:01 · 236 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
什么是享元模式?享元模式(FlyWeight Pattern),运用共享技术有效的支持大量细粒度的对象。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。这种类型的设计模式属于结构型模式。核心享元...原创 2018-02-27 13:42:15 · 223 阅读 · 0 评论 -
原型模式(Prototype Pattern)
原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据。原创 2017-12-11 22:27:11 · 243 阅读 · 0 评论 -
工厂模式(Factory Pattern)
概述工厂模式(Factory Pattern)是Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。原创 2017-12-03 15:46:49 · 266 阅读 · 0 评论 -
建造者模式(Builder Pattern)
什么是建造者模式?建造者模式(Builder Pattern)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。原创 2017-12-05 12:10:05 · 188 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
什么是适配器模式适配器模式(Adapter Pattern)属于结构型模式,它将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于不兼容而不能在一起工作的哪些类可以在一起工作。原创 2017-12-13 22:51:38 · 245 阅读 · 0 评论 -
代理模式(Proxy Pattern)
什么是代理模式(Proxy Pattern)代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。这种类型的设计模式属于结构型模式。核心作用通过代理,控制对象访问。可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。...原创 2018-02-27 12:52:48 · 200 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
什么是桥接模式桥接模式的定义桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂...原创 2018-02-27 13:00:29 · 400 阅读 · 0 评论 -
组合模式(Composite Pattern)
什么是组合模式定义:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。使用组合模式的场景把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。组合模式核心抽象构件(Component)角色:定义了...原创 2018-02-27 13:07:55 · 178 阅读 · 0 评论 -
装饰模式(Decorator Pattern)
什么是装饰模式?定义装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。职责动态的一个对象增加新的功能。装饰模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免...原创 2018-02-27 13:16:08 · 190 阅读 · 0 评论 -
外观模式(Facade Pattern)
什么是外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 外观模式遵循迪米特法则: - 一个软件实体应当尽可能少的与其他实体发生相互作用。 外观模式的核心: - 为子系统提供统一的接口。封装子系统的复杂性,便于客户端调用。结构Fac...原创 2018-02-27 13:23:59 · 184 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
什么是备忘录模式?备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式。 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。涉及角色 1. Originator源发器类(发起人):负责创建一个备忘录Meme...原创 2018-02-27 14:21:54 · 499 阅读 · 0 评论