状态者模式

一、概念 状态模式是一种较为复杂的行为型设计模式,它用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统的某个对象存在多个状态时,这些状态可以互相转换,而且对象在不同的状态下行为也不相同。 很多时候状态切换表示会用if-else 或者switch 来表示状态,这会导致代码的可维护性和灵活度下降,当出现新的状态时,需要修改客户端代码,不符合开闭原则。状态模式将对象的状态分离,封装到专
状态者模式

观察者模式

一、概念 观察者模式是使用频率较高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,当一个对象发生改变时将自动通知其他对象,其他对象将做出相应的反应。在观察者模式中发生改变的对象称为观察目标,而被通知的对象成为观察者,一个观察者目标可以对应多个观察者。 定义:定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并自动更新。 二、模式结构 Subject(
观察者模式

职责链模式

一、概念 在系统中如果存在多个对象可以处理同一请求,则可以通过职责链模式将这些处理请求的对象连成一条链,让请求沿着该链进行传递。如果链上的对象可以处理该请求则进行处理,否则将请求转发给下家进行处理。 定义:避免将一个请求的发送者与接收者耦合在一起。让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并沿着这条链传递请求,直到有一个对象能够处理它为止。 二、模式结构 Handler(抽象处理者
职责链模式

代理模式

一、概念 当无法直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象要实现相同的接口。代理模式根据其目的不同,划分为保护代理、虚拟代理、缓存代理等。 代理模式引入一个代理对象,在客户对象和目标对象中之间起到一个中介的作用,去掉了客户不能看到的内容和服务或者添加客户需要的额外的新服务。 定义:给某一个对象提供一个代理或占位符
代理模式

享元模式

一、概念 当系统存在大量相同或者相似的对象时,可以使用享元模式。享元模式通过共享技术实现相同或者相似的细粒度对象的复用,从而节约了内存空间,提高了系统性能。在享元模式中提供了一个享元池用于存储已经创建好的享元对象,并通过享元工厂类将享元对象提供给客户端使用。 定义:运用共享技术有效地支持大量细粒度对象的复用。 享元模式与对象池模式的区别:对象池的概念是为了避免频繁地进行对象创建和释放导致内存碎片,
享元模式

装饰模式与外观模式

一、装饰模式 1.1 概念 装饰模式是一种用于替代继承的技术,它通过无须定义子类的方式来给对象动态的增加职责,使用对象之间的关联关系取代类之间的继承关系。装饰模式降低了系统的耦合度,可以动态增加或删除对象的职责。 定义:动态地给一个对象增加一些额外的职责,就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。 1.2 模式结构 Component(抽象组件):具体组件和抽象装饰类的共同父
装饰模式与外观模式

组合模式

一、概念 在面向编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承,继承是面向对象的四大特征之一,表示is-a的类关系,继承特性解决了代码复用的问题,但是当继承的深度过度,代码变得更复杂,变得更难以维护。而组成则表示has-a的关系,是把另外一个对象当作当前这个对象的一部分,是组成我的一部分,能够很好的实现代码的复用。 组合模式是一种结构性设计模式,它允许你将对象组合成树形结
组合模式

适配器和桥接模式

一、适配器模式 1.1 概述 适配器模式充当两个不兼容接口之间的桥梁,属于结构型模式,它通过中间件(适配器)将一个类的接口转换为客户期望的另一个接口。如生活中的充电器,生活用电的电压是220V但是手机的工作电压没那么高,于是就有了充电器(变压器)让手机能在220V电压下充电,在这电源充电器就充当了一个适配器的角色。 定义:将一个类的接口转换为客户希望的另一个接口,适配器让那些接口不兼容的类可以一起
适配器和桥接模式

原型模式

一、概述 原型模式是一种特殊的创建型模式(对象创建型模式),它通过复制一个已有对象来获取更多相同或者相似的对象。原型模式可以提高相同类型对象的创建效率,简化创建过程。其中原型模式又分为浅拷贝和深拷贝。浅拷贝是指复制引用但不复制引用的对象,而深拷贝复制的引用和引用对象。 定义:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 二、模式结构 Prototype(抽象原型类):它声
原型模式

建造者模式

一、概念 建造者模式是一种创建型设计模式,它将客户端与包含多个部件的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分和装配方式,只需知道建造者的类型即可。建造者模式关注如何一步一步地创建一个复杂的对象,不同的具体建造者者定义了不同的建造过程,而且具体的建造者相互独立。 定义:又称生成器将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现。 二、模式结构 产品(Pr
建造者模式