2011-03-20 2 views
0

나는 다른 클래스의 계층 구조에서 내장 클래스를 가지고 있고, 나는 클래스 이름 예를디자인 패턴을 배우고 있습니다. 이 클래스의 팩토리 패턴을 디자인하도록 도와 주시겠습니까?

class Class1 extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

class Class2 extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

class Class3 extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

에 대한

이외의 동일한 보였다 같은 클래스의 무리를 만들었다 그러나 나는 희망 (실현 클래스 패턴을 사용하여 클래스 [1-3]을 생성하고 클래스 이름을 전달하고 팩토리에 이러한 클래스 중 하나를 반환하게 할 수 있습니다. 이렇게하면 코드가 훨씬 적어 유지 보수가 훨씬 쉬워집니다. 또한,이 구현 제안 어떻게 이렇게하고 싶어 말한다면 :

class Class4 extends AnotherBaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

노트는 클래스 4는 다른 기본 클래스를 확장하지만 AnotherBaseClass가 보유하고있는 정보의 작은 비트보다 동일한 다른입니다.

지금은이 같은 (내 생각이 시점에서 퍼지 및 불완전) 생각하고있다 :

을 // 난 공장 패턴에게 올바른을 반복 코드

class Skeleton extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 


class ClassFactory 
{ 
    public function __construct($className , $classType) 
    { 
     <pseudocode> 
     Class5 = new $className 
     ???and some how make $className extend $classType ??? 
     return class5 
     </pseudocode> 
    } 

} 

을인가 걸었 곳 대답?

건배!

+1

"클래스 이름 이외의 다른 클래스와 동일한 클래스를 만들었습니다."- 절대하지 마십시오. – smartcaveman

답변

0

예 - 공장 패턴이 정답입니다. 또한 Abstract Factory을 확인할 수도 있습니다. 특히 언급 한 시나리오에 대해 일부 클래스는 다른 속성을 가지며 다른 기본 클래스에서 파생 될 수 있습니다.

관련 문제