2009-06-03 5 views
0

나는 다형성에 관해서는 아직 초보자이므로 문구를 올바르게 입력 할 수 있기를 바랍니다.OO 디자인 : 부모로부터 자식 클래스를 반환

내 데이터베이스 - 개, 고양이 및 마우스에 테이블이 있다고 가정 해 봅니다. 같은 동물 클래스 인 뭔가

$animal = new Animal("dog", 12); 

: 내가 좋아하는 뭔가를 호출 할 수 있도록하려면이 작동하지 않습니다

class Animal { 
    protected $id; 
    protected $legs; 
    protected $height; 
    function __construct($type, $id) { 
    if ($type == "dog") { 
     return new Dog($id); 
    } 
    } 
} 

class Dog extends Animal { 
    function __construct($id) { 
    $this->id = $id; 
    $this->legs = 4; 
    $this->height = 1; 
    } 
} 

하지만 새로운 동물과 패스를 호출 할 수 있도록하려면 특정 동물에 넣고 돌려 주도록하십시오. 어떻게 설계 할 수 있습니까? (나는 PHP를 사용하고있다).

답변

5

를 검색하려고 디자인 패턴은 공장 패턴이라고합니다. 당신은 여기에서 읽을 수 있습니다

Factory Pattern

그리고 약간의 이상 기사를 PHP를 위해 :

Design Patterns in PHP
The Basics of Using Factory Pattern in PHP

+0

예! 이것이 바로 그 것이다. 필자는 "Design Patterns in PHP"가 가장 유용하다는 것을 알았습니다. 다른 PHP 기사는 동시에 추상화에 대해 이야기하면서 나에게 다소 혼란 스러웠습니다. –

0

내가 PHP를 모르지만 당신이

패턴에 대한 설명은 "네 공장의 갱"를 검색해보세요

공장

라고 얘기 디자인 패턴을 도움이된다면.

그리고 실제로 당신이 찾고있는 무엇 "PHP 공장 패턴 구현"

2

은 당신이 원하는 것은 "공장 패턴"입니다. 새 Animal을 직접 생성하는 대신 생성 할 동물의 유형을 선택하는 함수를 호출하십시오. 자바에서는 그 클래스의 정적 메서드를 만들 것입니다. 파이썬에서는 키에 연결된 사전에 모든 Animal 클래스를 저장하므로 키를 검색하여 인수를 생성자에 전달할 수 있습니다 .

PHP의 경우 Using the Factory Pattern in PHP에 대한 기사를 찾았습니다.

관련 문제