GoFによるデザインパターンより
アブストラクトファクトリー
意図
具象クラスを指定せずに、関連オブジェクトまたは依存オブジェクトのファミリを作成するためのインターフェイスを提供します。
動機
Motif や Presentation Manager など、複数のルック アンド フィール標準をサポートするユーザー インターフェイス ツールキットを検討してください。さまざまなルック アンド フィールによって、スクロール バー、ウィンドウ、ボタンなどのユーザー インターフェイス "ウィジェット" のさまざまな外観と動作が定義されます。ルック アンド フィールの標準間で移植可能にするために、アプリケーションは、特定のルック アンド フィール用にウィジェットをハードコーディングしないでください。アプリケーション全体でウィジェットのルック アンド フィール固有のクラスをインスタンス化すると、後でルック アンド フィールを変更することが難しくなります。
この問題は、基本的な種類のウィジェットを作成するためのインターフェイスを宣言する抽象 WidgetFactory クラスを定義することで解決できます。ウィジェットの種類ごとに抽象クラスもあり、具象サブクラスは特定のルック アンド フィール標準のウィジェットを実装します。WidgetFactory のインターフェースには、抽象ウィジェット クラスごとに新しいウィジェット オブジェクトを返す操作があります。クライアントはこれらの操作を呼び出してウィジェット インスタンスを取得しますが、クライアントは使用している具象クラスを認識しません。したがって、クライアントは一般的なルック アンド フィールから独立したままになります。
私は次の意味が何を意味するのか疑問に思っていました:
ルック アンド フィールの標準間で移植可能にするために、アプリケーションは、特定のルック アンド フィール用にウィジェットをハードコーディングしないでください。
と
アプリケーション全体でウィジェットのルック アンド フィール固有のクラスをインスタンス化すると、後でルック アンド フィールを変更することが難しくなります。
特に、抽象ファクトリ クラスを使用しない場合、コードはどのように見え、なぜ悪いのでしょうか? ありがとう。