2013-02-26 2 views
1

저는 학교에서 한 가지 최고의 클래스가 있습니다.OOP 팩토리 메서드와 생성자

그리고 학교 수업을 연장하는 몇 가지 수업. 나는 자식 클래스 중 하나를 호출해야한다면

일반적으로, 나는 사용한다 :

new Math('aaa'), 또는 new English(array('foo'))을;

모든 하위 클래스에는 다른 매개 변수가 있습니다.

1) 그래서, 학교 클래스의 팩토리 메소드 만들기 :

지금 무슨 일이 더

School::Factory('aaa')이 공장에 지정된 파라미터에 따라 Math('aaa') 클래스를 반환() 메소드는

2) 또는 단순히 각 어린이 클래스를 직접 호출 할 수 있습니까?

편집 : 나는 두 개의 하위 클래스 만 가지고 있는데, 내 문제는이 작업을 프로덕션 코드에서 단순화 할 가치가 있는지 모른다는 것입니다. Factory 메서드에 전달 된 매개 변수를 확인하고이 정보를 기반으로이 두 클래스 중 하나를 호출합니다. 어떻게 생각해?

한 쪽에서는 더 간단한 코드를 작성할 수 있습니다. 다른 경우에는 새 자식 클래스를 추가해야 할 때마다 (그럴 가능성은 적지 만) Factory() 메서드를 변경해야하므로 여기에 종속성이 있습니다.

+0

당신의 예에서 아무 의미가 일반적인 조언 할 수 이 주제에 주어지면 항상 구성 요소의 특정 구조를 고려해야합니다. – Niko

+0

수정 됨, 지금 확인하세요 – khernik

+0

무엇이 부족한가요? 더 나은 디자인 결정을 할 기회는이 질문에 답할 가치가있었습니다. P – khernik

답변

0

1) 그래서, 학교 클래스의 팩토리 메소드 만들기 :

당신은 당신이 학교를 확장이 개 수업을 말한다. 그러므로, 학교 이 공장으로 행동해서는 안됩니다. 부모 클래스는 그 자식/하위 클래스에 관해서는 아무것도 알지 못한다.

2) 아니면 단순히 각 하위 클래스를 직접 호출합니까?

예를 들어 createMath(aaa)으로 "CourseFactory"또는 "LectureFactory"를 가질 수 있습니다. 또는 경우에 따라 createLecture("math") 일 수 있습니다.

그러나, (당신이 MathSchool 및 EnglishSchool을 의미하지 않는,하지만 난 MathCourse 및 EnglishCourse로 이해) 수학 또는 영어 학교를 확장 나는 생각하지 않는다

관련 문제