DesignPatternsPHP

php实现设计模式

View on GitHub

创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。 这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

简单工厂模式

提供了一种 创建对象 的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个 共同的接口指向新创建的对象

场景:数据库访问; 当不知道最后系统采用哪一类数据库时

抽象工厂模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

场景: 程序换主题;假定主题有多种颜色和多种风格样式。

静态工厂模式

与抽象工厂相似,此模式用于创建一系列相关或相关对象。 静态工厂模式仅使用一种静态方法来创建它可以创建的所有类型的对象。通常以factory或build命名。

场景: 格式化不同类型的数据。

建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

场景: 去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的”套餐”。

对象池模式

使用一组初始化的对象保持准备使用状态的对象。 客户端向对象池请求一个对象,并对返回的对象进行操作。完成后将对象返回池中,而不是销毁对象。 适合对时间消耗较高的对象的创建(例如数据库连接,套接字连接,线程和大型图形对象,如字体或位图)

场景:mysql数据库连接池。

单例模式

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。 这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

场景:数据库连接。

原型模式

为了避免以标准方式(构造函数)创建对象,而创建一个原型并将其克隆。 当直接创建对象的代价比较大时,则采用这种模式。

场景:创建不同类型的书。