设计模式
文章平均质量分 89
23种设计模式
pengge2013
这个作者很懒,什么都没留下…
展开
-
单例模式的八种写法
写法一:饿汉式,静态常量public class Singleton1 { private final static Singleton1 instance = new Singleton1(); public Singleton1() { } public static Singleton1 getInstance() { return ...原创 2020-02-23 16:10:08 · 86 阅读 · 0 评论 -
工厂模式
引入以一个订Pizza的需求引入:Pizza的种类很多(GreekPizza、CheesePizza等) Pizza的制作有prepare,bake,cut,box 完成Pizza店的订购功能传统的做法为:这样,每增加一个Pizza种类,都要修改图中虚线内的代码。倘若有多个OrderPizza类,就要修改多处。简单工厂模式简单工厂模式是由一个工厂对象决定创建出哪一种产...原创 2020-02-23 21:37:40 · 94 阅读 · 0 评论 -
原型模式
原型模式基本介绍原型模式(Prototype模式)是指用原型实例指定创建对象的种类,并且的通过拷贝这些原型,创建新对象。原型模式是一种创建型模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。原型模式的共偶作原理是:通过将一个原型对象传给哪个需要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建。即 对象.clone()原型模式的UML图...原创 2020-02-24 09:59:16 · 69 阅读 · 0 评论 -
建造者模式
基本介绍建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式的四个角色Product(产品角色):一个具体...原创 2020-02-24 12:01:20 · 102 阅读 · 0 评论 -
享元模式
基本概念享元模式也叫蝇量模式:运用共享基数有效地支持大量细粒度的对象 常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个 享元模式能够解决重复对象的内存浪费的问题,当系统中有大量的相似对象,需要缓冲池时,不需要总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高...原创 2020-02-27 15:37:32 · 149 阅读 · 0 评论 -
外观模式
基本概念外观模式(Facade)也叫“过程模式”,外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口是的这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,二无需关心这个子系统的内部细节。原理类图说明:1)外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请...原创 2020-02-26 10:39:58 · 179 阅读 · 0 评论 -
组合模式
基本概念组合模式(Composite Pattern)又叫整体部分模式,属于结构型模式。它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式一句树形结构来组合对象,用来表示部分以及整体层次。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理各个对象以及组合对象。原理类图说明:1)Component:这是组合中对象...原创 2020-02-25 15:55:50 · 156 阅读 · 0 评论 -
适配器模式
基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式...原创 2020-02-24 18:04:22 · 74 阅读 · 0 评论 -
代理模式
基本概念代理模式:为一个对象提供一个替身,以控制这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩张目标对象的功能。 被代理的对象可以是远程对象此昂、创建开销大的对象或者需要安全控制的对象 代理模式有不同的形式,主要有三种:静态dialing、动态代理(JDK代理、接口代理)和Cglib代理(可以在内存动态的创建对象,而不需实现...原创 2020-02-27 20:54:01 · 136 阅读 · 0 评论 -
装饰者模式
基本概念装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(OCP)。基本原理装饰者模式就想打包一个快递:主体:陶瓷,衣服等(Component)被装饰着;包装:报纸填充,塑料泡沫等(Decorator)装饰者 Component:主体 ConcreteComponent和Decorator:ConcreteCompone...原创 2020-02-25 14:26:11 · 81 阅读 · 0 评论 -
桥接模式
基本概念桥接模式(Bridge模式)是指将实现与抽象放在两个不同的类层次中,是两个层次可以独立改变。 是一种结构性设计模式 Bridge模式基于类的最小设计原则,通过使用封装、聚合及集成等行为让不同的类承担不同的职责。它的主要特点是把抽象(abstract)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。案例:手机操作问题现在对于...原创 2020-02-25 00:04:18 · 92 阅读 · 0 评论 -
状态模式
基本概念状态模式(State Pattern):它主要用来解决对象再多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换 当一个对象的内部状态改变时,允许改变其行为,这个对象看起来像是改变了其类原理类图说明:1)Context类为环境角色,用于维护State实例,这个实例定义当前状态。2)State是抽象状态角色,定义一个接口封装与Contex...原创 2020-03-01 22:46:16 · 135 阅读 · 0 评论 -
职责链模式
基本概念职责链模式(Chain of Responsibility Pattern),又叫责任链模式,为请求创建了一个接收者对象的链。这种模式对请求的返送这和接收者进行解耦。 职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此类推。 这种类型的设计模式属于行为型模式。原理类图说明:1)Handler:抽象的处...原创 2020-03-02 15:22:19 · 121 阅读 · 0 评论 -
中介者模式
基本概念职工接着模式(Mediator Pattern),使用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互 中介者模式属于行为性模式,使代码易于维护 比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用原理类图说明:1)M...原创 2020-03-01 20:47:40 · 336 阅读 · 0 评论 -
模板方法模式
基本概念模板方法模式(Template Method Pattern),又叫模板模式,在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重新定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。原理类图...原创 2020-02-28 22:07:33 · 190 阅读 · 0 评论 -
访问者模式
基本概念访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题 访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口 访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这样彼此操作没有关联),同...原创 2020-03-01 10:44:39 · 189 阅读 · 0 评论 -
备忘录模式
基本概念备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态 可以这样理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,一方忘记了。而在软件层面,备忘录模式就有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做...原创 2020-03-01 21:38:02 · 127 阅读 · 0 评论 -
观察者模式
基本原理观察者模式类似于订牛奶业务:奶站是Subject,用户是Observer Subject:登记注册、删除和通知。registerObserver注册;removeObserver移除;modifyObservers()通知所有的注册的用户,根据不同的需求,可以是更新数据,让用户来去,也可能是实时推送,看具体需求定 Observer:接收输入 观察者模式:对象之间多对一依赖的一只狗...原创 2020-03-01 18:30:42 · 108 阅读 · 0 评论 -
策略模式
基本概念策略模式(Strategy Pattern)中,定义算法簇(策略组),分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户 这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体的类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。原理类图说明: 从上图可以看出,客户contex...原创 2020-03-02 14:22:55 · 252 阅读 · 0 评论 -
命令模式
基本概念命令模式(Command Pattern)原创 2020-02-29 21:09:57 · 153 阅读 · 0 评论 -
迭代器模式
基本概念迭代器模式(Iterator Pattern)是常用的设计模式。属于行为型模式 如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。 迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:...原创 2020-03-01 13:33:05 · 134 阅读 · 1 评论