设计模式学习(一)

创建设计模式:用户创建对象时的模式。

1.单例模式

定义:只会创建一个对象实例

特点:存在一个静态成员保存实例对象 / 外部类使用只有唯一入口getInstance这个方法 / clone方法禁止使用

使用场景:比如数据库类实例,我们只希望它被创建一次,然后在需要使用到类实例的地DB::getInstance(1)即可;

单例模式代码

2.工厂模式

定义:确实是对象实例的生产工厂

特点:子类需要继承工厂类 / 由工厂类调用自身静态方法判断具体实例化的对象

使用场景:多种支付方式的添加,如项目刚起步只用户微信支付,后续添加了支付宝,银行卡等。具体有哪种支付方式,可以创建一个工厂类,由用户的选择去实例化具体的支付方式

工厂模式代码

3.抽象工厂方式

定义:创建一个约束接口,相关功能去按照接口规范实现这个接口达到统一

特点:有一个总的抽奖类 / 具体的行为交给相关的工厂 / 总的调度是由最后的product来实现

使用场景:可同工厂方法一样使用,抽象工厂模式是工厂模式的改良

抽象工厂模式一
抽象工厂模式二

4.建造者模式(生成器模式)

定义:对象实例是由多个分散的零件组成

特点:Product产品类:通常是实现了模板方法模式,也就是有模板方法和基本方法 / Builder抽象建造者:规范产品的组件,一般是由子类实现/ ConcreteBuilder具体建造者:实现抽象类定义的所有方法,并且返回一个组建好的对象/Director导演类:负责安排已有模块的顺序,然后告诉Builder开始建造

使用场景:相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式/多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式/产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适/在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程

构建者模式代码

5.原型模式

定义:原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象

特点:提供一个拷贝对象方法

使用场景:PHP是解释性语言,每次运行脚本都要重新加载变量,原型模式可以缓解压力

原型模式代码

你可能感兴趣的:(设计模式学习(一))