![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
HHozi
本博客主要是用来记录自己学习上的总结,以便日后复习。很多文章都是从别的博客文章直接摘抄复制,望见谅。
展开
-
Head First
备注:原创 2020-03-30 11:43:52 · 77 阅读 · 0 评论 -
中介者模式
Mediator软件设计模式,行为模式之一类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。角色和职责:mediator:中介者的抽象父类concreteMediator:具体的中介者类colleague:关联类的抽象父类concreteColleague:具体的关联类优点:1.将系统按功能分割成...翻译 2019-05-31 15:16:19 · 88 阅读 · 0 评论 -
职责链模式
Chain of Responsibility (CoR)行为模式该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连。要实现Chain of Responsibility 模式,需要满足以下条件:1.对象链的组织。需要将某任务的所有职责执行对象以链的形式加以组织。2.消息或请求的传递。将消息或请求沿着对象链传递,以让处于对象链中的对象得到处...翻译 2019-06-01 15:00:34 · 110 阅读 · 0 评论 -
迭代模式
Iterator行为模式它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。角色和职责:Iterator(迭代器接口):该接口必须实现迭代功能的最小定义方法集,比如提供hashNext(),next()方法ConcreteIterator(迭代器实现类):迭代器接口Iterator的实现类。可以根据具体情况加以实现,需要得到内部信息,所...翻译 2019-06-01 15:59:02 · 111 阅读 · 0 评论 -
模板方法模式
Template Method行为模式它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。应用场景:1.具有统一的操作步骤或操作过程2.具有不同的操作细节3.存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同角色和职责:AbstractClass:抽象类的父类ConcreteClass:具体的实现子类temp...翻译 2019-06-02 10:00:19 · 92 阅读 · 0 评论 -
备忘录模式
Memento行为模式它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。应用场景:如果一个对象需要保存状态可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。1.一个类需要保存他的对象的状态(相当于Originator角色)2.设计一个类,该类只是用来保存上述对象的状态(相当于Meneto角色)(和Origi...翻译 2019-06-02 10:46:08 · 88 阅读 · 0 评论 -
状态模式
State行为设计模式通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转译到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。//Contextpublic class Person { private int hour; private State st...翻译 2019-06-02 11:26:17 · 91 阅读 · 0 评论 -
命令模式
Command行为设计模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。应用场景:在面向对象的程序设计中,一个对象调另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。整个调用过程比较繁杂,或者存在多处这种调用。这时,使用Comma...翻译 2019-06-02 12:18:50 · 90 阅读 · 0 评论 -
组合模式
Composite构造型设计模式之一通过递归手段来构造树形得对象结构,并可以通过一个对象来访问整个对象树角色和职责:Component(树形结构得节点抽象)1.为所有的对象定义统一的接口(公共属性,行为等的定义)2.提供管理子节点对象的接口方法3.(可选)提供管理父节点对象的接口方法Leaf(树形结构的叶节点)Component的实现子类Composite(树形结构的枝节点)...翻译 2019-05-30 00:12:02 · 107 阅读 · 0 评论 -
访问者模式
Visitor行为模式它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的前提下,增加操作。根据软件设计的开闭原则(对修改关闭,对扩展开放)角色和职责:1.访问者角色(Visitor):为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发生访问请求给具体访问者的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。2.具体访问者角色(...翻译 2019-06-02 14:47:12 · 91 阅读 · 0 评论 -
外观模式
Facade为一组具有类似功能的类群,提供一个一致的简单界面。角色和职责1.Facade为调用方定义简单的调用接口2.Clients调用者。通过Facade接口调用提供某功能的内部类群3.Packages功能提供者,指提供功能的类群(模块或子系统)//Facadepublic class Facade { private SystemA systemA; pr...翻译 2019-05-28 16:21:04 · 96 阅读 · 0 评论 -
解释器模式
Interprete行为模式之一它建立一个解释器,对于特定的计算机程序设计语言,它用来解释预先定义的文法(即简单的语法解释器构架)。角色和职责:Context:解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。AbstractExpression:解释器抽象类ConcreteExpression:解释器具体实现类。//Context/** * 上下文环境类...翻译 2019-05-31 14:23:52 · 99 阅读 · 0 评论 -
适配器模式
Adapter构造型模式通过Adapter模式可以改变已有类(或外部类)的接口形式。Adapter模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替代外部组件时,最多只要修改几个Adapter类就可以了。public class Current { public void user220V(){ ...翻译 2019-05-31 00:01:43 · 88 阅读 · 0 评论 -
单例模式
保证一个类只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。应用:多线程环境,共享同一资源或对象。在整个程序空间使用全局变量,共享资源。大规模系统,为了性能考虑。/**懒汉式在多线程下可能有多个实例*/public class FullPerson { private String name; private static FullPerson full...翻译 2019-05-26 13:43:58 · 86 阅读 · 0 评论 -
原型模式
Prototype对象创建型模式,采取复制原型对象的方法来创建对象的实例特点:1.由原型对象自身创建目标对象。2.目标对象是原型对象的克隆。3.根据对象克隆深度层次不同,有浅克隆与深度克隆应用场景:1.在创建对象的时候,不只是希望继承基类的基本结构,还希望继承原型对象的数据2.希望对目标对象的修改不影响既有的原型对象(深度克隆)3.隐藏克隆操作的细节public class P...翻译 2019-05-26 14:17:40 · 105 阅读 · 0 评论 -
建造者模式
Builder对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性地对象。应用场景:对象的创建:Builder模式是为对象的创建而设计的模式创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法Build...翻译 2019-05-26 15:29:00 · 120 阅读 · 0 评论 -
装饰模式
Decorator包装模式通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替代方案。角色和职责:抽象组件角色:一个抽象接口,是被装饰类和装饰类的父接口(方便叠加功能)具体组件角色:为抽象组件的实现类抽象装饰角色:包含一个组件的引用,并定义了与抽象组件一致的接口。具体装饰角色:为抽象装饰角色的实现类。负责具体的装饰。抽象组件角色(Component)public in...翻译 2019-05-26 16:24:16 · 116 阅读 · 0 评论 -
策略模式
行为模式之一。它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现。主要用来平滑地切换算法。角色和职责:Strategy:策略的抽象ConcreteStrategy:各种策略的具体实现Context:策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。优点:1.提供了管理相关算法族的办法。恰...翻译 2019-05-26 20:04:26 · 114 阅读 · 0 评论 -
观察者模式
Observer行为模式之一当一个对象的状态发生变化时(被观察),能够自动通知其他关联对象,自动刷新对象状态。提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。Subject(被观察者)(继承Observable,通过setChanged(),notifyObservers()方法通知)被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象...翻译 2019-05-27 21:07:51 · 113 阅读 · 0 评论 -
享元模式
Flyweight构造型模式之一通过与其他类似对象共享数据来减小内存占用角色和职责1.抽象享元角色所有具体享元类的父类,规定一些需要实现的公共接口。2.具体享元角色抽象享元角色的的具体实现类,并实现了抽象享元角色规定的方法。3.享元工厂角色负责创建和管理享元角色抽象享元角色public class Person { private String name; ...翻译 2019-05-28 10:02:44 · 121 阅读 · 0 评论 -
代理模式
Proxy构造型的设计模式为其他对象提供一种代理,以控制对这个对象的访问。客户端必须通过代理与被代理的目标类交互,代理对象在交互过程中,进行某些特别处理。subject(抽象主题角色)真实主题与代理主题的共同接口。RealSubject(真是主题角色)定义了代理角色所代表的真实对象。Proxy(代理主题角色)含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真实主题对象之...翻译 2019-05-28 10:11:39 · 95 阅读 · 0 评论 -
桥接模式
Bridge构造型的设计模式Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。他的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。...翻译 2019-05-30 21:41:25 · 96 阅读 · 0 评论 -
工厂模式
1.简单工厂模式静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。模式中包含的角色及职责1.工厂负责创建所有实例的内部逻辑,工厂类可以被其他外界直接调用,创建所需的产品对象。2.抽象角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所有的公共接口3.具体产品简单工厂模式所创建的具体实例对象。public class Simple...翻译 2019-05-25 16:02:40 · 105 阅读 · 0 评论