【发布时间】:2012-11-25 12:08:02
【问题描述】:
我是 OOP 和设计模式的新手。
我有一个简单的应用程序来处理表、列(属于表)、行(属于列)和值(属于行)的生成。这些对象中的每一个都可以是 Property 的集合,而 Property 又被定义为枚举。
它们都是接口:我使用工厂来获取这些产品的具体实例。
现在我面临扩展这些类的问题。假设我需要另一个名为“SpecialTable”的产品,它又具有一些特殊属性或新方法,如“getSomethingSpecial”或一组扩展的属性。唯一的方法是扩展/专门化我的所有元素(即构建一个 SpecialTableFactory、一个 SpecialTable 接口和一个 SpecialTableImpl 具体)?假设我仍然想使用不需要继承的标准方法,例如 addRow(column, name)...
我不喜欢继承工厂和接口的想法,但由于 SpecialTable 有更多的方法,我猜它不能共享同一个工厂。我错了吗?
另一个问题:如果我需要在运行时定义产品属性(升级到 SpecialTable 的 Table),我想我应该使用装饰器。是否可以(以及如何)将工厂设计和装饰设计结合起来?
【问题讨论】:
-
也许我意识到问题应该出在programmers.stackoverflow.com上
标签: oop design-patterns decorator factory-pattern dataabstract