是否使用原型模式

时间:2011-10-28 06:39:14

标签: php design-patterns prototype-pattern

我有一个问题。我需要创建一些与产品有关的东西。现在我可以说7种不同类型的产品。有些是其他的亚型,例如

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

现在,为了争论,我所有的城市,两厢车和轿车都是混合动力/燃气/什么,我不打算卖汽油和柴油。然而,未来某个时候我可能会有汽油和柴油轿车,但这并不是说我将拥有20多种类型的产品。如果它会上升,我可能会有2-3种类型。

根据我的理解,Prototype Pattern在这里可能会很好,因为我将能够避免庄园 - >汽油和汽油和汽油之间的重复...但是那时范汽车将具有不同的特性而不是说城市车例如最大装载尺寸。

我一直在广泛阅读有关设计模式的内容,我记得有一件事是在你不需要时不使用模式。现在问题是 - 我需要吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

装饰器模式可能是最直接使用的,并且是扩展具体对象功能和/或特性的好方法。

以下是一些轻读:Head First Design Patterns - CH3 pdf

仅供参考,夫妻必须拥有学习和参考设计模式,无论您选择何种语言:

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

还有其他一些,我将不得不挖掘它们。

答案 1 :(得分: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 { }

如果Van的特征只是与Car不同的值,则不需要子类化,只需更改属性值即可。例如,Van应具有其他属性或不同的方法实现,以便有资格进行子类化。