设计模式
六大设计原则与23种设计模式
码路编
这个作者很懒,什么都没留下…
展开
-
命令模式
命令模式(Command)命令模式是行为模式之一,Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数1. 命令模式中的角色及其职责1.1 Command是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。Commandpackage com.liuyao;/** * @author liuyao...原创 2018-11-10 20:20:33 · 112 阅读 · 0 评论 -
访问者模式
访问者模式(Visitor)访问者模式是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作。1. 访问者模式中的角色及其职责1.1 访问者角色(Visitor)为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。Vis...原创 2018-11-10 20:20:04 · 115 阅读 · 0 评论 -
状态模式
状态模式(State)状态模式是行为模式之一,状态模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。1. 状态模式中角色及其职责1.1 用户对象(Context)拥有一个State类型的成员,以标识对象的当前状态Mainpackage com.liuyao;import java.util.HashMap;import java.util...原创 2018-11-10 20:19:29 · 117 阅读 · 0 评论 -
模板方法模式
模板方法模式(Template Method)模板方法模式是行为模式之一,它把具体特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。1. 模板方法中的角色及其职责1.1 Abstract Class抽象类MakeCarpackage com.liuyao;/** * @author liuyao * @date 2018/0...原创 2018-11-10 20:18:58 · 141 阅读 · 0 评论 -
备忘录模式
备忘录模式(Memento)备忘录模式是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。1. 备忘录模式中的角色及其职责1.1 原生者(Originator)需要被保存状态以便恢复的那个对象Personpackage com.liuyao;/** * @author liuyao * @date 2018/08/...原创 2018-11-10 20:18:19 · 148 阅读 · 0 评论 -
中介者模式
中介者模式(Mediator)中介者模式是行为模式之一,在中介者模式中,类之间的交互行为被统一放在中介者的对象中,对象通过中介者对象同其他对象交互,中介者对象起着控制器的作用。1. 中介者模式中的角色及其职责1.1 Mediator中介者类的抽象父类AbstractMediatorpackage com.liuyao;/** * @author liuyao * @dat...原创 2018-11-09 09:47:05 · 126 阅读 · 0 评论 -
责任链模式
责任链模式(Chain of Responsibility)责任链模式是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些累的额对象之间像链条一样紧密相连,所以称为责任链模式。1. 责任链模式的基本条件对象链的组织。需要将某任务的所有职责执行对象以链的形式加以组织消息或请求的传递。将消息或请求沿着对象链传递,让处于对象链中的对象得到处理机会。处于对象...原创 2018-11-09 09:46:30 · 189 阅读 · 0 评论 -
迭代模式
迭代模式(Iterator)迭代模式是行为模式之一,他把对容器中包含的内部对象的访问委让给外部类,使用Iterator按顺序进行遍历访问的设计模式。不使用迭代模式存在的问题:由容器自己实现顺序遍历。直接在容器类里直接添加顺序遍历方法。(容器类承担了太多功能:一方面需要提供添加删除等本身应有的功能;一方面还需要提供遍历访问功能)让调用者自己实现遍历。直接暴露数据细节给外部。(往往容器在遍...原创 2018-11-09 09:45:53 · 408 阅读 · 0 评论 -
解释器模式
解释器模式(Interpreter)解释器模式行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。即解释器模式是一种简单的语法解释器构架。1. 解释器模式中的角色及其职责1.1 Context解释器上下文环境类,用来存储解释器的上下文环境,比如需要解释的文法等。Contextpackage com.liuyao;/**...原创 2018-11-09 09:45:27 · 302 阅读 · 0 评论 -
组合模式
组合模式(Composite)组合模式是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。1. 组合模式中的角色及其职责1.1 树型结构的节点抽象(Component)为所有的对象定义统一的接口(公共属性,行为等的定义)提供管理子节点对象的接口方法提供管理父节点对象的接口方法(可选)IFilepackage com.liuyao;...原创 2018-11-09 09:44:50 · 118 阅读 · 0 评论 -
外观模式
外观模式(Facade)外观模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面称作外观(facade)1. 外观模式的角色及其职责1.1 外观(Facade)为调用方定义简单的调用接口Facadepackage com.liuyao;/** * @author liuyao * @date 2018/08/02 */pub...原创 2018-11-09 09:44:12 · 122 阅读 · 0 评论 -
适配器模式
适配器模式(Adapter)适配器模式是构造型模式之一,通过适配器模式可以改变已有类(或外部类)的接口形式1. 适配器模式中的角色及其职责1.1 目标接口客户端使用的接口Targetpackage com.liuyao;/** * @author liuyao * @date 2018/08/03 */public interface Target { publ...原创 2018-11-09 09:43:34 · 117 阅读 · 0 评论 -
桥接模式
桥接模式桥接模式是构造型的设计模式之一,基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。1. 桥接模式中的角色及其职责1.1 Client桥接模式的使用者就是后面使用的Main类1.2 Abstraction维护对行为实现(Implementor)的引用C...原创 2018-11-09 09:43:05 · 125 阅读 · 0 评论 -
享元模式
享元模式(Flyweight)享元模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用1. 享元模式的角色及其职责1.1 抽象享元角色所有具体享元类的父类,规定一些需要实现的公共接口Personpackage com.liuyao;/** * @author liuyao * @date 2018/08/01 */public class Person {...原创 2018-11-09 09:42:31 · 108 阅读 · 0 评论 -
代理模式
代理模式(Proxy)代理模式是构造型的设计模式之一。他可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。1. 代理模式中的角色及其职责1.1 抽象主题(Subject)真实主题与代理主题共同的接口Subjec...原创 2018-11-09 09:41:56 · 130 阅读 · 0 评论 -
观察者模式
观察者模式(Observer)观察者模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。观察者模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保存状态同步。1. 观察者模式的角色及其职责1.1 被观察者(Subject)被观察的对象,被观察者的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(...原创 2018-11-06 17:01:42 · 164 阅读 · 0 评论 -
装饰器模式
装饰器模式(Decorator)装饰模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。1. 装饰模式中的角色和及其职责1.1 抽象组件角色一个抽象接口,是**被装饰类(RunCar)和装饰类(CarDecorator)**的父接口Carpackage com.liuyao;/** * @author liuyao * @date 20...原创 2018-11-06 17:01:12 · 114 阅读 · 0 评论 -
策略模式
策略模式(Strategy)策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有算法加以封装和实现,具体的算法选择交给客户端决定。策略模式主要用来平滑地处理算法的切换。1. 策略模式的角色及其职责1.1 策略(Strategy)策略(算法)的抽象。Encryptpackage com.liuyao;/** * @a...原创 2018-11-06 16:59:58 · 104 阅读 · 0 评论 -
建造者模式
建造者模式(Builder)Builder模式是一种对象创建型模式,又叫生成器模式,用来隐藏符合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态的创建具有符合属性的对象。1. 模式中包含的角色及其职责1.1 产品(Product)最后客户端需要获得的产品Productpackage com.liuyao;import lombok.Data;i...原创 2018-11-06 16:59:18 · 137 阅读 · 0 评论 -
原型模式
原型模式原型模式是一种对象创建型模式,它采用复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。1. 原型模式的特点由原型对象自身创建目标对象。也就是对象创建这一动作发自原型对象本身。目标对象是原型对象的一个克隆。也就是说,通过prototype模式创建的对象,不仅与原对象具有相同的结构,还与原型对象具有相同的值。根据对象克隆深度层次的不...原创 2018-11-06 16:58:39 · 172 阅读 · 0 评论 -
简单工厂模式
简单工厂模式(SimpleFactory)简单工厂模式属于类的创建型模式,又叫静态工厂方法模式,通过专门定义的一个类来负责创建其他类的实例,被创建出来的类通常具有共同的父类。1. 模式中包含的角色及其职责1.1 工厂(Creator)简单工厂模式的核心,它负责实现创建所有实例的内部逻辑,工厂类可以被外界直接调用,创建所需的产品对象AnimalFactorypackage com.l...原创 2018-11-06 16:57:34 · 115 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的,抽象工厂模式可以向客户端提供一个接口,使得客户端再不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象1. 模式中包含的角色及其职责1.1 抽象工厂(Creator)抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口AnimalFactorypackage com.liuyao;...原创 2018-11-06 16:56:54 · 111 阅读 · 0 评论 -
工厂方法模式
工厂方法模式工厂方法模式同样属于类的创建型模式,又被成为多态工厂模式。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样抽象的好处是可以使得系统在不修改工厂角色的情况下引进新的产品。1. 模式中包含的角色及其职责1.1 抽象工厂(Creator)工厂方法模...原创 2018-11-06 16:56:01 · 139 阅读 · 0 评论 -
单例模式
单例模式的七种写法Ensure a class has only one instance,and provide a global point of access to it.确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例**优点:单例模式内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁的创建、销毁时,而且创建或销毁的性能又无法优化。单例的优势就很明显了...原创 2018-11-06 16:54:18 · 112 阅读 · 0 评论 -
六大设计原则
六大设计原则1.单一职责原则 SRP (Single Responsibility Principle)定义应该有且仅有一个原因引起类或接口的变更,类和接口只有一个职责,它就负责一件事好处类的复杂性降低,实现什么职责都有清晰明确的定义可读性提高了,复杂性降低了可维护性提高变更引起的风险降低建议:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。2.里氏替换原则 ...原创 2018-11-06 16:50:53 · 108 阅读 · 0 评论