php 디자인 모델 기반 공장 모델 상세 소개

공장 모델: 공장 클래스가 매개 변수에 따라 어떤 제품 종류를 만드는지 결정하는 실례 공장 클래스: 다른 대상을 만드는 방법 클래스입니다.즉, 수요에 따라 분배하고 매개 변수를 전송하여 선택하여 구체적인 클래스 작용을 되돌려준다. 대상이 만든 봉투, 창설 대상의 조작을 간소화하는 것, 즉 공장 클래스를 호출하는 방법으로 필요한 클래스 보충을 얻는 것이다. 1.주요 역할: 추상 제품(Product), 구체적인 제품(Concrete Product), 추상 공장 역할(Creator)2.장단점 장점: 공장 방법 모델은 시스템이 공장 역할을 수정하지 않는 상황에서 심장 제품의 단점을 도입할 수 있다. 고객은 특정한 Concrete Product 대상을 만들기 위해 Creator 하위 클래스를 만들어야 할 수 있다.적용성은 하나의 클래스가 만들어야 할 대상을 알 수 없을 때, 하나의 클래스가 그 클래스가 만든 대상을 제정하기를 원할 때, 하나의 클래스가 창설 대상의 직책을 여러 개의 도움말 하위 클래스에 의뢰하고, 어떤 도움말 하위 클래스가 이 정보를 국부화하는 것을 대리하기를 원할 때

<?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();
?>

좋은 웹페이지 즐겨찾기