设计模式
设计模式 什么是设计模式 设计模式 是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。每一个设计模式描述了一个在我们周围不断重复发生的问题
设计模式教程
设计模式教程 为什么要使用设计模式 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编制真正工程化,设计模式是软件工程的基石
设计模式六大原则
设计模式六大原则 设计模式六大原则 单一原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则 设计模式单一原则 别称 单一职责原则,也叫 Single Responsibility Principle, SRP。
设计模式六大原则 设计模式六大原则 单一原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则 设计模式接口隔离原则 别称 接口隔离原则,也叫 Interface Segregation Principle, ISP。
设计模式分类
设计模式分类 设计模式分类教程 设计模式根据其目的可分为 创建型(Creational), 结构型(Structural) 和 行为型(Behavioral)三种。 设计模式根据范围可分为 类模式 和 对象模式 两种。 设计模式目的分类
单例设计模式
单例模式,是一种常用的软件设计模式。许多时候整个系统只需要拥有一个全的局对象,这样有利于我们协调系统整体的行为,而单例模式的核心结构中只包含一个被称为单例的特殊类。
单例饿汉式实现
饿汉式也叫立即加载的形式。饿汉式就是使用类的时候已经将对象创建完毕(不管以后会不会使用到该实例化对象,先创建了再说。很着急的样子,故又被称为“饿汉模式”)。
单例懒汉式实现
懒汉式也叫延迟加载的形式。懒汉式就是调用 get() 方法时实例才被创建(先不急着实例化出对象,等要用的时候才给你创建出来。不着急,故又称为“懒汉模式”)。
工厂设计模式
平时创建对象的时候是通过 new 类来直接创建对象,而工厂模式是通过使用一个共同的接口根据不同的条件来产生具体想要创建的对象。
简单工厂模式实现
简单工厂模式,严格意义上讲不算设计模式,而是一种编程习惯,根据传递的参数来判断返回一个具体的对象。
工厂方法模式实现
工厂方法模式用于定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体的子类工厂类当中。这个要求满足创建与使用相分离的特点。
抽象工厂模式实现
抽象工厂模式用于为访问类提供一个创建一组相关或互相依赖对象的接口,并且访问类无须指定所要产品的具体类就能够得到同族的不同等级的产品的模式结构。
建造者设计模式
建造者模式将多个简单的对象构建成一个复杂的对象。它将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式实现
建造者模式实现步骤:1. 先定义复杂对象中的元素对象,比如构建产品对象里面需要有机票,酒店,门票,保险等对象。 2. 定义一个产品,产品里面包含了上面定义的小元素。
原型模式设计模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的心对象。
原型模式设计模式实现
原型模式设计模式实现步骤:1. 先定义一个将来需要被复制的类,实现 Cloneable 接口,重写 copy 方法。2. 调用对象 clone 方法获取新对象。
适配器模式
将一个类里面的方法转换成客户希望的另外一个方法,使得原来由于方法不兼容而不能够一起工作的那些类能够一起工作。
适配器设计模式实现
1. 原先已经存在一个类,类里面有一个特性的方法。2. 系统功能扩展,对上面已有方法的调用需要改变,为了不影响原来的方法,需要新接入的方法的功能编写。
桥接模式
将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。又称为柄体模式或接口模式。
桥接模式实现
1. 判断项目中是否存在类有两种甚至多余两种维度的需求。2. 将多个维度的需求抽离出来,抽离多个抽象类。
装饰模式
在不改变现有对象结构的情况下,动态的给该对象增加一些额外的功能的模式。
装饰者模式实现
已经有一个存在的实现方法,它是继承一个抽象类或者实现接口,如果不是需要继承一个抽象或者实现接口。
组合模式
组合模式将对象组合成树形结构以表示 "部分-整体" 的层次结构。组合模式使得用户可以使用一致的方法操作单个对象和组合对象。
组合模式实现
1. 理清父类和子类之间的关系,是不是有层级关系。2. 定义根目录的类或者接口。
外观模式
为多个复杂的子系统提供一个一致的接口,从而使这些子系统更加容易的被访问。外部系统访问的时候,只会关心该接口,不会关注内部细节。
外观模式实现
1. 理清现有的被调用的外部子系统中的方法。2. 建立一个外观角色类,定义一个方法,将所有被引用子系统中的方法整理。
享元模式
享元模式,运用共享技术,有效地支持大量细粒度的对象的复用。
享元模式实现
1. 了解现有项目中需要大量重复创建的对象。2. 将被创建对象的类中的方法进行分析,有公共的方法和私有的方法。
代理模式
一个类代表另一个类的功能,被代表的类不会对外部提供访问路径,只有代理类提供。
代理模式实现
1. 定义一个抽象的主题类。2. 定义一个具体的实现主题的实现类,实现里面的具体方法。
模板方法
模板方法定义一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类在不改变算法架构的情况下,重新定义算法中的某些步骤。
模板方法模式实现
1. 定义一个抽象类,里面有给子类实现的具体逻辑方法,也有一些公共的业务逻辑方法。2. 定义具体实现类,来自定化自己的实现逻辑。
命令模式
将一个请求封装为一个对象,让发出请求的任务和执行的任务分割开。
命令模式实现
1. 定义命令的执行者,里面执行具体的业务逻辑。2. 定义具体的命令,该对象中会将具体的命令执行者作为参数接收,调用操作。
迭代器模式
迭代器模式,提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
观察者模式
一个目标对象管理所有相依于它的观察者对象,在它本身的状态发生改变的时候,主动发出通知,观察它的对象将会收到通知,做一些具体操作。所以观察者模式又叫做发布-订阅模式。
观察者模式实现
1. 理清观察者被被通知者之间的关系。2. 定义一个抽象的被通知者接口。
中介者模式
用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
中介者模式实现
1. 理清各个业务类对象之间的关系,判断是不是复杂的两两依赖关系,把他们当作顾客类。 2. 定义中介者类,在里面将顾客的信息维护注册,并且顾客在注册的时候,也将中介者信息维护。里面会定义一些方法,用来处理顾客之间的信息交互(方法调用逻辑)。
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后需要的时候能够将该对象恢复到原先保存的状态。
备忘录模式实现
1. 理清业务类,该类继续处理自己要做的业务逻辑。 2. 定义一个容器类,这个容器类用来存储业务类的不同状态下的对象。
状态模式
允许一个对象在其内部状态改变的时候改变它的行为,对象看起来是别的类修改了它的类。
状态模式实现
策略模式
定义一系列的算法,将每个算法封装起来,并且让它们可以相互的替换。算法的变更对于客户端而言是无感知的。
策略模式实现
1. 定义一个抽象的业务类。2. 定义具体的业务实现类,里面处理自己特有的业务逻辑。
责任链模式
一个请求有多个对象来处理,这些对象使一个链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链表中的下一个对象,直到有对象处理它为止。
责任链模式实现
1. 定义一个抽象的实现类,里面要定义一个 next 的指针。2. 定义具体的实现类,里面实现具体的实现逻辑,并且给 next 指针赋值。
访问者模式
将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问模式。
访问者模式实现
1. 理清元素信息,定义一个抽象的元素类,里面包含了一个方法,用来接收访问者。 2. 定义真实的抽象元素的实现类,实现自己的特有方法。
解释器模式
定义一个语法规则,然后再定义一个解析器去解析该语法。