我有一个小房子来建房子。房子会有很多楼层(楼层),楼层可以有很多房间,房间可以容纳很多物品。所以我倾向于使用Decorator Pattern来完成这个程序。这是最初的设计:
http://img337.imageshack.us/img337/5530/maina.jpg
你能帮助我改进设计吗?
答案 0 :(得分:2)
在面向对象的编程中,装饰器模式是一种设计模式,允许动态地将新/附加行为添加到现有对象。
这是wikipedia如何启动它关于装饰器模式的文章。
因此装饰器模式是关于向现有对象添加行为。并且房间中的物品不是该房间的额外行为。
我认为Composite pattern是为该域构建模型的更好选择。
(但是如果你仍然想要一个装饰器为你的房子,你可能会找到一个更好的解决方案here ;-))
答案 1 :(得分:2)
我不认为装饰者是正确的模式。 我所看到的设计是“is-a”和“has-a”关系的多个实例。
Room
应该有List<Item> items
希望澄清您设计中的预期用途。
答案 2 :(得分:1)
我在这里看到了很多遗产。装饰者模式决定了较少的继承和更多的构成。因此,您可以在运行时创建装饰器并修饰对象。请参阅Decorator Patter。