![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
QQxiaoqiang1573
这个作者很懒,什么都没留下…
展开
-
设计模式之总序
概述模式是特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思想或参照样板。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。七大设计原则1、单一职...原创 2019-05-10 11:31:41 · 210 阅读 · 0 评论 -
设计模式之职责链模式
定义避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。UML类图代码实现Handler.javapublic abstract class Handler { protected Handler successor; public void setSucc...原创 2019-05-11 09:55:40 · 193 阅读 · 0 评论 -
设计模式之命令模式
定义将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。UML类图代码实现Command.javapublic abstract class Command { public abstract void exec...原创 2019-05-11 09:59:05 · 210 阅读 · 0 评论 -
设计模式之解释器模式
定义定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。UML类图代码实现Context.javapublic class Context { private ArrayDeque<String> map = new ArrayDeque<>(); public ...原创 2019-05-11 10:02:03 · 318 阅读 · 0 评论 -
设计模式之迭代器模式
定义提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。UML类图代码实现Iterator.javapublic interface Iterator { public void first(); public void next(); public boolean hasNext();...原创 2019-05-11 10:04:11 · 200 阅读 · 0 评论 -
设计模式之中介者模式
定义用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。UML类图代码实现Mediator.javapublic abstract class Mediator { protected ArrayList<Colleague> l...原创 2019-05-11 10:07:14 · 198 阅读 · 0 评论 -
设计模式之备忘录模式
定义在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。UML类图代码实现Originator.javapublic class Originator { private String state; public String getState() { ...原创 2019-05-11 10:09:15 · 184 阅读 · 0 评论 -
设计模式之观察者模式
定义定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式是一种对象行为型模式。UML类图代码实现Observer.javapu...原创 2019-05-13 09:01:01 · 243 阅读 · 0 评论 -
设计模式之策略模式
定义定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。UML类图代码实现Strategy.javapublic abstract class Strategy { public abstract void algorithm();}Context.javap...原创 2019-05-13 09:02:49 · 209 阅读 · 0 评论 -
设计模式之状态模式
定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。UML类图代码实现State.javapublic abstract class State { public abstract void handle();}Context.javapublic clas...原创 2019-05-13 09:02:04 · 153 阅读 · 0 评论 -
设计模式之模板方法模式
定义定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。UML类图代码实现AbstractClass.javapublic abstract class AbstractClass { public void templateMethod...原创 2019-05-13 09:04:01 · 174 阅读 · 0 评论 -
设计模式之代理模式
定义给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。代理模式是一种对象结构型模式。在代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务。远程代理(Remote Proxy):一种常用的代理模式,它使得客户端程序可以访问在远程主机上的对象,远程主机可能具有更好的计算性能与处理速度,...原创 2019-05-11 09:49:37 · 182 阅读 · 0 评论 -
设计模式之享元模式
定义运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。UML类图代码实现Flyweight.javapublic class Flyweight { private String intrinsicState...原创 2019-05-11 09:46:29 · 148 阅读 · 0 评论 -
设计模式之外观模式
定义为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。外观模式中所指的子系统是一个广义的概念,它可以是一个类、一个功能模块、系统的一个组成部分或者一个完整的系统。子系统类通常...原创 2019-05-11 09:43:06 · 214 阅读 · 0 评论 -
设计模式之简单工厂模式
定义定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。简而言之,就是面包工厂生产各种面包,分别是菠萝包、手撕面包、火腿肠面包等等面包,客户想要生成什么面包,就跟工厂说需要生产什么面包即可。缺点就是客户需要三明治面包的话,工厂必须另外在增加一条三明...原创 2019-05-10 11:35:04 · 192 阅读 · 0 评论 -
设计模式之工厂方法模式
定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。简而言之,就是现在有多家面包生产工厂,分别是菠萝...原创 2019-05-10 11:41:52 · 162 阅读 · 0 评论 -
设计模式之抽象工厂模式
定义提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。简而言之,就是工厂不在只生产面包,它同时还可以生产辣条,糖果等食品,转型成一个食品工厂。可以生产多种食品类产品,就是说从单一食品种类面包生产,到支持多种类型的食品生产的工厂。UML类图代码实现ProductA.javapublic abstract class...原创 2019-05-10 11:48:07 · 211 阅读 · 0 评论 -
设计模式之单例模式
定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。UML类图代码实现饿汉式EagerSingleton.javapublic class EagerSingleton { private static final EagerSingleton instance = new EagerSi...原创 2019-05-10 14:16:08 · 147 阅读 · 0 评论 -
设计模式之原型模式
定义将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于在软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原型模式是一种“另类”的创建型模式,创建克隆对象的工厂就是原型类自身,工厂方法由克隆方法来实现。浅拷贝在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型...原创 2019-05-10 14:23:14 · 235 阅读 · 0 评论 -
设计模式之建造者模式
定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。UML类图代码实现Product.javapublic class Product { private String partA; private String partB; private String partC; public Strin...原创 2019-05-10 14:29:21 · 204 阅读 · 0 评论 -
设计模式之适配器模式
定义将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。在实际开发中,对象适配器的使用频率更高,...原创 2019-05-10 14:43:15 · 211 阅读 · 0 评论 -
设计模式之桥接模式
定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。UML类图代码实现Abstraction.javapublic abstract class Abstraction { protected Implementor impl; public void s...原创 2019-05-10 14:52:35 · 200 阅读 · 0 评论 -
设计模式之组合模式
定义组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。UML类图代码实现Component.javapublic abstract class Component { public abstract voi...原创 2019-05-10 15:03:11 · 165 阅读 · 0 评论 -
设计模式之装饰模式
定义动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。UML类图代码实现Component.javapublic abstract class Component { public abstract void operation();}Decorator.javapublic class Decora...原创 2019-05-11 09:39:32 · 190 阅读 · 0 评论 -
设计模式之访问者模式
定义提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。UML类图代码实现Element.javapublic interface Element { public void accept(Visitor visitor);}Visitor.javapublic abstrac...原创 2019-05-13 09:09:35 · 242 阅读 · 0 评论