工厂模式 - 你什么时候说你需要一个专门的工厂

时间:2010-03-28 21:51:42

标签: design-patterns

我有一点设计危机,我正在制作一个由

组成的飞机课程

引擎

2翼

和N个席位

发动机采用发动机尺寸,机翼有跨度。

如果工厂可能需要采用多个参数来设置飞机(机翼,发动机,无座椅),那么拥有PlaneFactory仍然是可行的

提前致谢

2 个答案:

答案 0 :(得分:4)

如果您的飞机物体变成了一个复杂的物体,您可以使用builder design pattern逐个部件地创建物体

你可以轻松地应用维基百科中的着名披萨示例来解决你的问题,构建器类将有像构建机翼,构建引擎......以及最终getplane()的方法。 您可以使用不同的构建器类来实现抽象构建器类,每个构建器创建一个不同的平面(使用不同的组件)

答案 1 :(得分:1)

这取决于你究竟需要什么,你可以使用更多的设计模式。工厂方法对于复杂的创建来说是一个好主意,这实际上是模式的重点。如果你想逐步建造飞机,特别是当你需要在整个飞机完成之前使用飞机的部件时(例如你不需要机翼出售座位的车票:)))...而不是建造者模式真的是你需要的。它也可能会发生,你创造了许多飞机并且它们都有许多机翼和座椅,它们是相同的(例如你有三种标准类型的引擎),而不是你可以使用Flyweight模式,所以每个飞机都有相同类型的机翼将使用完全相同的翅膀(完全不现实:) ...)。也可能发生这样的情况:为飞机创建一个控制面板需要花费很多工作,这可以事先完成,而不仅仅是复制 - 这就是Prototype模式。我认为这些是你可能需要的最有可能,对于更具体的anser,你应该提供更多关于你需要的信息。