2010-04-30 4 views
3

코드에 Fund 모델을 사용해야한다는 요구 사항이 있습니다. 펀드 이름과 펀드 코드가 포함됩니다. 재사용을 위해 사용 된 다른 모델을 포함하는 패키지를 뚫고 기존의 Fund 모델을 발견했습니다. 그러나 여기에서 문제는 펀드 이름과 코드 외에도 금액이 포함되어 있다는 것입니다. 양은 내 맥락에서 직접적으로 관련이 없습니다. 그럼,해야합니까 :모델 구성 요소를 거의 다시 사용하지 않는 것이 가장 좋습니다.

1) 기금 금액에 대한 setter/getter를 무시하고 기존 Fund 모델을 그대로 사용하십시오.

2) 내가 관심이있는 정보 만 액세스하기위한 기존의 Fund 모델 위에 FundDescription 인터페이스를 넣습니다.

3) 기존의 Fund 모델은 지금

을 확장 할 수있는에서 FundDescription 기본 클래스를 확인 4) 두 가지가 약간 문맥에 따라 다르기 때문에 전혀 새로운 모델을 새로 작성하십시오.

답변

2

옵션 1은 코드를 읽고 누군가를 유혹 할 수 있습니다. o 일부 오해로 인해 setter/getter를 사용하기 위해 코드를 완전히 이해하지 못합니다. 다른 옵션을 사용하면 코드를 더 잘 이해할 수 있습니다.

옵션 2 제 2 위 솔루션의 종류는 제게는 논리적으로는 완벽하지 않습니다

옵션 3이 문제는 나열된 문제 중 가장 명확하고 가장 논리적 인 방법으로,이 경우에 가장 적합한 것으로 간주됩니다.

옵션 4 소리가 필요하지 않습니다. :-)

옵션 5 (NEW! 내가 :-) 가고 싶어 하나는 Fund 모델의 유형 FundDescriptor의 멤버 변수를 가지고.

이런 종류의 디자인 결정에 직면 할 때마다 보통 "가장 효율적인 솔루션이 무엇이겠습니까?"또는 "최소한의 코드가 필요한 솔루션은 무엇이 될까?"라고 생각하지 않고 대신 을 가장 논리적으로 생각합니다. 코드를 처음 읽는 사람은입니다.

"확장"구문을 "is-a"관계로 생각하고 큰 소리로 읽습니다. 그것이 의미가 있고 논리적 인 경우에, 그것을 위해 가십시오. 어떻게하면, "FundFundDescriptor"이 당신에게 들리는가요? 이 "흠 .. 그건 이해가되지 않습니다"와 같은 소리가 나는 경우에, 나는 그렇지 않으면 내가 옵션 3을

Inheritance vs. Aggregation에서 허용 대답을 살펴 것, 옵션 5 가고 싶어

+0

좋은 답변입니다. 감사. 나는 당신의 선택을 좋아한다. –

관련 문제