解释器模式

2019-12-06
阅读 2 分钟
1k
解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式

状态模式

2019-12-05
阅读 2 分钟
1.2k
状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式

职责链模式

2019-12-05
阅读 4 分钟
885
职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止

备忘录模式

2019-12-05
阅读 3 分钟
1.1k
备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。 Originator(原发器):它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状...

中介者模式

2019-11-30
阅读 3 分钟
1.1k
中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式 如果一个对象中对象之间的联系呈现为网状结构,对象之间存在大量多对多的关系,将导致关系极其复杂,这些对象被...

观察者模式

2019-11-30
阅读 3 分钟
898
观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式典型应用:消息中间件...

迭代器模式

2019-11-30
阅读 4 分钟
939
迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式

访问者模式

2019-11-29
阅读 4 分钟
1.3k
访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。

命令模式

2019-11-29
阅读 4 分钟
846
命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),...

策略模式

2019-11-28
阅读 3 分钟
2k
策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式

模板方法

2019-11-28
阅读 2 分钟
855
模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤

代理模式

2019-11-28
阅读 4 分钟
871
代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能 代理模式有不同的形式, 主要有三种 静态代理、理 动态代理 (JDK 代理、接口代理)和 Cglib 理 代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属...

享元模式

2019-11-28
阅读 3 分钟
1.1k
享元模式(Flyweight Pattern):也叫蝇量模式,运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式享元类的设计是享元模式的要点之一,在...

外观模式

2019-11-28
阅读 2 分钟
928
以喝茶为例。张三和李四想喝茶了,需要煮水,准备茶具,准备茶叶,然后泡茶。如果他们去茶馆,只需要跟店小二说一句来杯茶,就可以喝到自己想喝的茶了,不需要关心茶馆是怎么煮水,准备茶具,准备茶叶的

组合模式

2019-11-28
阅读 4 分钟
917
组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍...

装饰者模式

2019-11-27
阅读 2 分钟
879
装饰者模式 动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性, 装饰者模式也体现了开闭原则(ocp) 示例1 抽象食物 {代码...} 具体食物(面条) {代码...} 修饰类 {代码...} 加盐 {代码...} 加醋 {代码...} 测试类 {代码...} 总结 优点: 对于扩展一个对象的功能,装饰模式比继承更加灵活性,不会导致类...

桥接模式

2019-11-27
阅读 2 分钟
1k
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。更容易理解的表述是:实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合起来,减少了各维度间的...

适配器模式

2019-11-27
阅读 4 分钟
1k
适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

建造者模式

2019-11-26
阅读 4 分钟
900
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。

原型模式

2019-11-26
阅读 7 分钟
1k
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。需要注意的是通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的。通过不同...

单例模式

2019-11-26
阅读 5 分钟
1k
单例模式 创建方式 饿汉式( 静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全,同步代码块) 双重检查 静态内部类 枚举 饿汉式( 静态常量) 步骤: 构造器私有化 (防止 new ) 类的内部创建对象 向外暴露一个静态的公共方法(getInstance) 示例1 单例对象: {代码...} 测试类...

抽象工厂模式

2019-11-26
阅读 3 分钟
888
在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性,一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。但是有时候我们希望一个工厂可以提供多个产品对象,而不是单一的产品对象,如一个水果工厂,它可以生产苹果、香蕉等多种电器,而不是只生产某一种水果。

工厂方法模式

2019-11-25
阅读 2 分钟
1.3k
工厂方法模式:定义一个用于创建对象的接口,但是让子类来决定到底创建哪一个实例。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式,简单来说是来为了解决简单工厂模式所出现的一些缺点而进行的改进。比如当一个简单的工厂模式要生产一个汽车,奥迪汽车,宝马汽车,但是如果要新增一个奔驰汽车。那么就要修改...

简单工厂模式

2019-11-25
阅读 3 分钟
1.3k
Factory(工厂角色):工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用,创建所需的产品对象;在工厂类中提供了静态的工厂方法factoryMethod(),它的返回类型为抽象产品类型Product

程序设计原则及设计模式

2019-11-25
阅读 2 分钟
1.2k
设计模式 设计模式的目的 重用性 可读性 可扩展性 可靠性 高内聚、低耦合 设计模式原则 单一职责原则 一个类应该只负责一项职责,不要存在多于一个导致类变更的原因。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更,而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2 接口隔离 ...