2011-10-28 2 views
3

질문이 있습니다. 제품과 관련하여 약간의 작업을해야합니다. 이제는 7 가지 유형의 제품을 말할 수 있습니다. 일부는 다른 사람의 하위 유형입니다.프로토 타입 패턴 사용 여부

Cars 
- Vans 
    - petrol 
    - diesel 
- City 
- Hatchback 
- Saloon 
- Estate 
    - petrol 
    - diesel 

지금, 인수를 위해 내 모든시는 해치백과 세단 형 자동차는 하이브리드입니다/가스/I는 가솔린과 디젤 사람들을 판매 할 계획이없는 무엇이든합니다. 그러나 내가 미래에 가솔린과 디젤 살롱 자동차를 가질 가능성은 있지만, 20 가지 이상의 제품을 갖고있는 것과는 다르다. 그것이 올라갈 예정이라면 나는 아마도 2-3 가지 타입을 더 가질 것입니다.

나는 Prototype Pattern가 좋을지도 모릅니다. 왜냐하면 저택 -> 휘발유와 반 - 휘발유 사이의 중복을 피할 수 있기 때문입니다 ...하지만 반 밴 차량은 도시 차량과 다른 특성을 가질 것입니다. 최대 하중 치수.

나는 디자인 패턴에 대해 광범위하게 읽고 있으며, 내가 기억하는 한가지는 필요하지 않을 때 패턴을 사용하지 않는 것입니다. 이제 질문은 - 필요합니까?

감사합니다.

답변

1

데코레이터 패턴은 아마도 가장 직선적 인 것으로, 구체적인 객체의 기능 및/또는 특성을 확장하는 데 적합합니다.

1) Head First Design Patterns

2) Patterns for Enterprise Application Architecture

: 참고로 Head First Design Patterns - CH3 pdf

는, 부부는 선택의 언어에 관계없이 디자인 패턴을 학습하고 참조하기위한의이 있어야합니다 : 여기

약간의 빛 독서입니다 3) Design Patterns: Elements of Reusable Object-Oriented Software

그리고 사이트 : 몇 사람이 있습니다

1) DoFactory

2) StackOverflow Design Patterns Newbie

, 내가 그들을 발굴해야합니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 런타임을 통해 꽤 많이 설정 될 것이므로 객체의 기능을 확장하고 싶지는 않지만 직접 상속과는 다른 방식으로 클래스를 모델링하고 싶습니다. – RandomWhiteTrash

+0

상관없이 귀중한 리소스에 대한 좋은 링크가 있습니다. – RandomWhiteTrash

1

자동차의 각 유형마다 다른 동작이 필요합니까? 가솔린 밴은 디젤차와 다른 역할을합니까? 살롱은 에해야만합니다.은 부동산과 다른가요? 만약 내가 제대로 이해 밴의 보임 그냥 다른 값이 자동차보다 경우

, 당신은 그

public enum FuelType 
{ 
    Petrol, 
    Diesel 
} 

public class Car 
{ 
    public string Name {get;set;} 
    public FuelType Fuel {get;set;} 
} 

public class Van:Car { } 
public class CityCar:Car { } 

같은 뭔가가 필요, 당신은 서브 클래 싱이 필요하지 않습니다, 당신은 단지 속성 값을 변경해야 . 예를 들어 밴은 서브 클래 싱에 적합한 다른 속성이나 다른 메소드 구현을 가져야합니다.