PHP设计模式-工厂模式

工厂模式多用于创建多种不同类型的类的多个对象

适用场景:当程序编写的时候,并不能确定在生成对象的时候其确切的对象类型,只有当程序运行的时候才会确定

一个工厂模式的变种是抽象工厂模式。然而工厂模式输出不同的对象,每一个都继承同一个父类,抽象工厂则输出这些工厂类。

工厂模式的好处:
1、将创建实例的工作与使用实例的工作分开
2、把初始化实例时的工作放到工厂里进行,使代码更容易维护。
3、使得修改代码时不会引起太大的变动,良好的扩展性

工厂类 Shape.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
/**
 * 获取一个形状的周长和面积  工厂模式
 * Created by PhpStorm.
 * User: shiwuhao
 * Date: 15/11/5
 * Time: 14:45
 */


require './shape/Rectangle.php';
require './shape/Triangle.php';

abstract class ShapeFactory{

    /**
     * 创建形状 根据类型值创建不同的对象
     * @param $type
     * @param array $sizes
     * @return Rectangle|Triangle
     */

    static function Create($type, array $sizes)
    {
        switch($type) {
            case 'rectangle' :
                return new Rectangle($sizes[0], $sizes[1]);
                break;

            case 'triangle' :
                return new Triangle($sizes[0], $sizes[1], $sizes[2]);
                break;
        }
    }
}

阅读更多