php设计模式之工厂模式

    添加时间:2013-5-15 点击量:
    工厂模式:由工厂类按照参数来决意创建出哪一种产片类的实例

    工厂类:一个专门用来创建其他对象的办法类。即按需分派,传入参数进行选择,返回具体的类

    感化:对象创建的封装、简化创建对象的操纵,即调用工厂类的一个办法来获得须要的类

    补充:

    1.首要角色:抽象产品(Product)、具体产品(Concrete Product)、抽象工厂角色(Creator)

    2.优毛病

        长处:工厂办法模式可以容许体系在不批改工厂角色的景象下引进心产品

        毛病:客户可能仅仅为了创建一个特定的Concrete Product对象,就不得不创建一个Creator子类

    3.实用性

        当一个类不知道它所必须创建的对象的时辰

        当一个类由它的子类来制订它所创建的对象的时辰

        当一个类将创建对象的职责委托给多个帮助子类的某一个,并且你将哪一个帮助子类是这一信息局部化的时辰

     



    <?php
    
    //对象
    class MyObject{
    public function __construct(){}
    public function test(){
    return test;
    }
    }
    //工厂
    class MyFactory{
    public static function factory(){
    return new MyObject();
    }
    }

    ¥myObject = MyFactory::factory();
    echo ¥myObject->test();
    ?>




    <?php
    
    //抽象类 定义属性及抽象办法
    abstract class Operation{
    protected ¥_NumberA = 0;
    protected ¥_NumberB = 0;
    protected ¥_Result= 0;

    public function __construct(¥A,¥B){
    ¥this->_NumberA = ¥A;
    ¥this->_NumberB = ¥B;
    }

    public function setNumber(¥A,¥B){
    ¥this->_NumberA = ¥A;
    ¥this->_NumberB = ¥B;
    }

    public function clearResult(){
    ¥this->_Result = 0;
    }

    abstract protected function getResult();
    }

    //操纵类
    class OperationAdd extends Operation{
    public function getResult(){
    ¥this->_Result = ¥this->_NumbserA + ¥this->_NumberB;
    return ¥this->_Result;
    }
    }

    class OperationSub extends Operation{
    public function getResult(){
    ¥this->_Result = ¥this->_NumberA - ¥this->_NumberB;
    return ¥this->_Result;
    }
    }
    …………

    //工厂类
    class OperationFactory{
    private static ¥obj;

    public static function CreationOperation(¥type,¥A,¥B){
    switch(¥type){
    case +:
    self::¥obj = new OperationAdd(¥A,¥B);
    break;
    case -:
    self::¥obj = new OperationSub(¥A,¥B);
    break;
    ……
    }
    }
    }

    //操纵
    ¥obj = OperationFactory:: CreationOperation(+,5,6);
    echo ¥obj-> getResult();
    ?>



    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: