2011-05-07 7 views
0

회사 목록이 있고 새로운 회사를 추가하거나 기존 회사를 편집 할 수 있다고 생각하십시오. 추가 및 편집은 양식을 사용하여 수행됩니다.양식 디자인 패턴 추가/편집

이 양식을 렌더링하려면 AddForm과 EditForm의 두 클래스가 필요합니다. 은 그러나 그들은 일반적인 (등등 필드, 버튼 등)에 많이있다, 그래서 나는 Form 클래스 일반화 :

class AddForm extends Form 
class EditForm extends Form 

가 그럼 난 형태를 많이 만들 필요를 : 회사, 연락처, 문서, 사용자 등을위한 에. 그래서 세 가지 기본 클래스와 라이브러리를 만들 :

abstract class BaseForm 
abstract class BaseAddForm extends BaseForm 
abstract class BaseEditForm extends BaseForm 

은 지금은 회사에 대한 구현을 만들려고 오전 :

class CompanyForm extends BaseForm 
class CompanyAddForm extends BaseAddForm, CompanyForm 

OOPS! 다중 상속은 허용되지 않습니다.

어떻게해야합니까?

업데이트 : 다중 상속의 필요성은 잘못된 디자인이라는 것을 알게되었습니다. 누구나이 디자인을 어떻게 다시 만들 수 있는지 보여 줄 수 있습니까?

답변

0

작곡과 같은 음향을 사용하고 싶습니다. Form에는 FormPanels 목록이 있습니다.

0

먼저 Kaj가 제안한대로 이러한 기능을 단일 양식으로 결합합니다. 이것은 회사 개체 목록이 관리되는 기능입니다. 이는 일반적인 사용자 관리 (예 : 단일 양식에서 회사 추가 또는 편집)에 대한 합리적인 정도의 세분성입니다.

두 번째로 다중 상속 문제에 관해서는 추가, 편집의 두 가지 양식이 필요하다고 말합니다. 좋아, 나는 동의하지만 어쨌든 그걸로 가자.

당신은 "하지만 그들은 공통점 (필드, 버튼 등)이 많아서 Form 클래스를 일반화합니다"라고 말합니다. 나는 여기에 일반화의 기초에 의문을 제기한다. 많은 필드와 버튼이 공통적으로 사용됩니까? DocumentEdit 및 CompanyEdit 양식에는 공통으로 어떤 필드와 버튼이 있습니까? 편집 버튼, 다른 건 없나요?

지금, 회사 추가 및 회사 예. 공통점이 많습니다. 이는 추가 및 수정 양식이 이러한 추상 추가/편집 기반 대신 부모 특정 양식을 확장한다는 것을 의미합니다. BaseFormAdd와 BaseFormEdit을 제거하십시오. 예제, 문서 양식 및 회사 양식간에 실제로 얼마나 많은 공통 기능을 사용할 예정입니까? 일반적인 기본처럼 추가 또는 편집 폼은 거의 사용하지 않습니다. 그 상속 라인없이 할 수 있습니다. 다중 상속의 관점에서 볼 때, 나는 단지 매우 드물게 필요로하는 것처럼 유용 할 수있는 상황에 처한다.

+0

읽기 쉽도록 답변을 다시 포맷하십시오. – MByD

+0

회사 양식 및 문서 양식에는 창, 양식 패널, 저장 및 취소 버튼 등이 많이 있습니다. –