2017-03-12 6 views
0

나는이 공장 패턴에 대해 읽고 있는데,이 패턴은 3 가지 형태, 간단한 공장, 공장 방법 및 추상 공장으로 구성된다.공장 방법 디자인 패턴 -PHP

단순한 팩토리는 디자인 패턴이 아닙니다. if/switch 문 또는 클래스가없는 클래스에 대한 직접로드와 함께 객체 생성 코드를 캡슐화하는 유형입니다.

팩토리 메서드로 이동하려고하면 간단한 공장에서 연기 할 수있는 명확한 예제를 찾을 수 없습니다.

여러분은 공장 방법을 설명하고 간단한 공장에서 연기하는 방법을 보여줄 수 있습니까?

감사합니다.

답변

0

간단한 공장 완전히 생성 로직 구현

가지 방법 (또는 하나 switch)와 간단한 클래스. PHP에서는 다음과 같이 보일 수 있습니다 :

tommorow를 지원해야하는 경우이 클래스 구현을 변경해야합니다. 여기에는 하위 클래스가 없습니다.이 클래스는 Animal 생성에 대한 모든 것을 알고 있습니다.

공장 방법

Animal 일부 proccessing을 수행하지만, 아직 생성하는 Animal 방법을 알고하지 않거나 클래스가있을 때 당신이 것을 결정합니다 서브 클래스를 가질 therfore 싶은, 무엇을 사용 . 그래서 우리는 sucblasses가 오버라이드 (override) 할 수있는 팩토리 메소드를 작성합니다.

abstract Class MyAnimalProcess 
{ 
    abstract function CreateAnimal(); 

    public function Process() 
    { 
     $animal = $this->CreateAnimal(); 
     ... 
     ... 
    } 
} 

class DogProcess extends MyAnimalProcess 
{ 
    function CreateAnimal() 
    { 
     return new Dog(); 
    } 
} 

그래서, 여기 당신은하고 Animal에 무언가를 추상 클래스 만의 서브 클래스가 될 것이다 Animal 결정하도록 할 수 있습니다. "공장"클래스 -

추상 공장

공장의 한 단계 앞으로 방법, 위임 다른 클래스의 생성을 가져 가라.
그래서 상속보다는 구성을 사용합니다.

abstract class AnimalFactory 
{ 
    public abstract function CreatePet(); 
    public abstract function CreateWildAnimal(); 
} 

class DogAnimalFactory extends AnimalFactory 
{ 
    public function CreatePet() 
    { 
     retrun new Dog(); 
    } 

    public function CreateWildAnimal() 
    { 
     return new AfricanWildDog(); 
    } 
} 

class CatAnimalFactory extends AnimalFactory 
{ 
    public function CreatePet() 
    { 
     retrun new Cat(); 
    } 

    public function CreateWildAnimal() 
    { 
     return new Tiger(); 
    } 
} 

class MyAnimalProcess 
{ 
    function __construct($animalFactory) { 
     $this->factory = $animalFactory; 
    } 

    public function ProcessPet() 
    { 
     $animal = $this->factory->CreatePet(); 
     ... 
     ... 
    } 

    public function ProcessWild() 
    { 
     $animal = $this->factory->CreateWild(); 
     ... 
     ... 
    } 
} 
0

어쩌면이
추상 공장은 공장 방법의 모음입니다, 더 명확하게하기 위해 도움이 될 것입니다. 플라 스티/금형
Abstract Factory - - 카드 공장


Factory Method : 실제 생활에서