我是 OOP 和设计模式的新手。
我有一个简单的应用程序来处理表、列(属于表)、行(属于列)和值(属于行)的生成。这些对象中的每一个都可以是 Property 的集合,而 Property 又被定义为枚举。
它们都是接口:我使用工厂来获取这些产品的具体实例。
现在我面临扩展这些类的问题。假设我需要另一个名为“SpecialTable”的产品,它又具有一些特殊属性或新方法,如“getSomethingSpecial”或一组扩展的属性。唯一的方法是扩展/专门化我的所有元素(即构建一个 SpecialTableFactory、一个 SpecialTable 接口和一个 SpecialTableImpl 具体)?假设我仍然想使用像 addRow(column, name) 这样不需要继承的标准方法......
我不喜欢继承工厂和接口的想法,但由于 SpecialTable 有更多方法,我猜它不能共享同一个工厂。我错了吗?
另一个问题:如果我需要在运行时定义产品属性(升级为 SpecialTable 的表),我想我应该使用装饰器。是否有可能(以及如何)结合工厂和装饰设计?