私はOOPとデザインパターンが初めてです。
テーブル、列 (テーブルに属する)、行 (列に属する)、および値 (行に属する) の生成を処理する単純なアプリがあります。これらの各オブジェクトは、列挙型として定義される Property のコレクションにすることができます。
これらはすべてインターフェイスです。これらの製品の具体的なインスタンスを取得するためにファクトリを使用しました。
現在、これらのクラスを拡張するという問題に直面しています。「SpecialTable」という別の製品が必要だとしましょう。この製品には、いくつかの特別なプロパティや、「getSomethingSpecial」などの新しいメソッドやプロパティの拡張セットがあります。唯一の方法は、すべての要素を拡張/特殊化することです (つまり、SpecialTableFactory、SpecialTable インターフェイス、および SpecialTableImpl 具象を構築します)? 継承する必要のない addRow(column, name) のような標準メソッドを引き続き使用したいとしましょう...
ファクトリとインターフェイスを継承するという考えは好きではありませんが、SpecialTable にはより多くのメソッドがあるため、同じファクトリを共有することはできないと思います。私が間違っている?
別の質問: 実行時に製品のプロパティ (SpecialTable にアップグレードされたテーブル) を定義する必要がある場合は、デコレータを使用する必要があると思います。ファクトリとデコレータの両方のデザインを組み合わせることは可能ですか?