2011-10-28 71 views
3

我有問題。我需要創建一個與產品有關的小東西。現在我可以說7種不同類型的產品。一些是其他人的亞型,例如是否使用原型模式

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

現在,對於參數的緣故我所有的城市,兩廂車和轎車是混合/氣體/不管,我不打算出售汽油和柴油的。不過,我有可能在未來某個時候使用汽油車和柴油轎車,但這並不像我將有20多種產品。如果它要上升,我可能會有2-3種類型。

從我所瞭解的Prototype Pattern可能是一個很好的在這裏,我將能夠避免房地產 - >汽油和麪包車 - >汽油之間的重複......但是,範廂車將會有不同於城市汽車的特徵,例如,最大加載尺寸。

我一直在廣泛閱讀有關設計模式的內容,並且我記得的一件事情是,當你不需要它時不會使用模式。現在的問題是 - 我需要它嗎?

謝謝!

回答

1

裝飾模式可能是最直接的使用,並將是一個很好的擴展具體對象的功能和/或特點。

下面是一些輕閱讀:Head First Design Patterns - CH3 pdf

FYI,夫婦必須有學習和參考設計模式,無論您選擇的語言的:

1)Head First Design Patterns

2)Patterns for Enterprise Application Architecture

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 { } 

如果範characterstics只是不同的價值觀比汽車,你不需要子類,您需要更改只是一個屬性值。範例如應該有其他屬性或方法的不同實現有資格進行子類化。