用于构建此复杂对象的设计模式

时间:2012-01-31 06:51:40

标签: java oop design-patterns

我必须创建一个基本上由其他组件组成的行程对象。

这些组件需要按特定顺序添加。我需要确保在不按顺序添加内容时,需要抛出异常/错误。

快速演练:

Itinerary Build-itinerary():

- AddSegment()
- AddBaggagePolicy()
- AddMisc()

Segment AddSegment(...)

- add departure airport
- add arrival airport
- add departure time
- add arrival time
- add duration (total duration)
- add airline

机场和航空公司是对象类型。

完成细分后,我需要合并细分以产生到达最终到达目的地的起点(因为从一个点到另一个点可能有多个跳点)。

我可以参考建立此行程的哪种模式?

5 个答案:

答案 0 :(得分:4)

看起来不够具体。乍一看,我可能将其描述为“建设者模式”。 Java中的许多(但不是全部!)设计模式是缺乏语言特性的解决方法。

事实上,你的设计存在代码气味,你不应该有一个明显任意有序的步骤来构造一个对象。而是定义数据,并将其传递给对象。

如果你必须像这样构建你的对象,那么我将确保使用支持模拟的记录和回放样式的模拟对所有执行此操作的代码进行单元测试。 (所谓的“严格嘲笑”。

答案 1 :(得分:2)

我根本不熟悉设计模式:我会从Builder模式开始,尝试验证每个组件是否已添加。至少这将是我的起点:一个Builder或一个私有静态内部类。

答案 2 :(得分:2)

尝试使用Builder Pattern。您也可以在Creational Patterns类别中查找其他变体。

如果您是设计模式的新手,那么请看一下“Head First Design Patterns” - 它在谷歌书籍中(我不知道如果完整或预览,但是......)

玩得开心:)

答案 3 :(得分:1)

当我听到“建筑”和“订单”这两个词时,首先想到的设计模式就是Builder。如果您是Design Patterns的新手,那么我建议您阅读“Applied Java Patterns”。

答案 4 :(得分:0)

不能同意@Arafangion,我相信某些程序调用的排序有时是必要的。我建议查看工厂方法设计模式,我记得在准备比萨饼时Head First Design Patterns书中有一个很好的例子:)