PHP中的设计模式-创建型-静态工厂
2018-02-06 16:14
519 查看
说明 :
本模式与简单工厂模式极为相似. 区别在于,不需要实例化一个工厂对象即可创建产品.
应用场景:
当创建过程较为简单时, 就使用静态工厂方法. 当创建过程较为复杂时,使用简单工厂方法.
静态工厂: 静态方法本质上是一个过程化的实现, 当创建过程几句话就能说明白的时候,就可以使用.
简单工厂:创建过程需要工厂对象大量复杂操作,使用到工厂对象的实例属性及其他实例方法时,就只能使用本模式了.
代码实现:
本模式与简单工厂模式极为相似. 区别在于,不需要实例化一个工厂对象即可创建产品.
应用场景:
当创建过程较为简单时, 就使用静态工厂方法. 当创建过程较为复杂时,使用简单工厂方法.
静态工厂: 静态方法本质上是一个过程化的实现, 当创建过程几句话就能说明白的时候,就可以使用.
简单工厂:创建过程需要工厂对象大量复杂操作,使用到工厂对象的实例属性及其他实例方法时,就只能使用本模式了.
代码实现:
/** * 静态工厂示例 * User: 蓝冰大侠 */ class CStaticFactory extends SController { public function index() { //使用工厂创建产品X $product = Factory::createProduct('x'); $product->methodA(); $product->methodB(); //使用工厂创建产品Y $product = Factory::createProduct('y'); $product->methodA(); $product->methodB(); } } //所有产品的基类 abstract class Product { //每个产品都必须实现以下方法 abstract public function methodA(); abstract public function methodB(); } //定义产品类X class ProductX extends Product { public function methodA() { echo 'product x do A.'; } public function methodB() { echo 'product X do B.'; } } //定义 产品类Y class ProductY extends Product { public function methodA() { echo 'product Y do A'; } public function methodB() { echo 'product Y do B'; } } //定义静态工厂类 class Factory { //根据参数的不同创建不同的产品 static public function createProduct($type): Product { if ($type == 'x') { return new ProductX(); } if ($type == 'y') { return new ProductY(); } throw new Exception('Unknown product type.'); } }
相关文章推荐
- 跟着实例学习设计模式(2)-静态工厂(创建型)
- 设计模式(一)简单工厂(创建型)(Java&&PHP)
- php设计模式——简单工厂(静态工厂)模式
- PHP中的设计模式-创建型-简单工厂
- 跟着实例学习设计模式(2)-静态工厂(创建型)
- PHP中的设计模式-简单工厂,静态工厂,工厂方法,抽象方法的关系
- PHP设计模式:创建型之工厂模式(Factory Method)
- PHP中的设计模式-创建型-抽象工厂
- 设计模式之创建型模式——简单工厂(又称为静态工厂不属于GOF23种设计模式以内)
- 小猪学设计模式——工厂模式之简单工厂(静态工厂)
- PHP设计模式之——工厂模式
- 设计模式(一)工厂模式Factory(创建型)
- 一起来学设计模式-----创建型模式之抽象工厂
- PHP 设计模式 抽象工厂
- PHP设计模式之-----简单工厂模式
- PHP设计模式系列 - 工厂模式
- Java常用的设计模式02:常用设计模式之工厂模式(创建型模式)
- [C#]设计模式-工厂方法-创建型模式
- JAVA设计模式之工厂方法 (创建型模式)
- java设计模式 单例设计模式+静态工厂模式