3

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

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

现在,为了争论,我所有的城市、掀背车和轿车都是混合动力/汽油/其他的,我不打算出售汽油和柴油车。然而,我有可能在未来的某个时候拥有汽油和柴油轿车,但我不会拥有 20 多种类型的产品。如果它要上涨,我可能会有 2-3 种类型。

据我了解,这Prototype Pattern可能是一个不错的选择,因为我将能够避免房地产->汽油和面包车->汽油之间的重复……但再一次,面包车将具有与城市汽车不同的特性,例如最大装载尺寸。

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

谢谢!

4

2 回答 2

1

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

这是一些简单的阅读:Head First Design Patterns - CH3 pdf

仅供参考,无论您选择哪种语言,都必须具备学习和参考设计模式的能力:

1)头部优先设计模式

2)企业应用架构模式

3)设计模式:可重用的面向对象软件的要素

和网站:

1)工厂

2) StackOverflow 设计模式新手

还有一些,我得把它们挖出来。

于 2011-10-28T07:34:32.803 回答
1

每种类型的汽车是否需要不同的行为?汽油货车与柴油货车的行为不同?Saloon 的行为必须与 Estate 不同?

如果我理解正确,你需要这样的东西

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 应该具有其他属性或不同的方法实现才能有资格进行子类化。

于 2011-10-28T07:48:46.697 回答