冬のセール!
Abstract Factory

Abstract Factory を Swift で

Abstract Factory 生成に関するデザインパターンのひとつで 具象クラスを指定することなく プロダクト 訳注 本パターンでは 生成されるモノのことを一般にプロダクトと呼びます のファミリー全部を生成することを可能とします

Abstract Factory は 個々のプロダクト全部を作成するためのインターフェースを定義しますが 実際のプロダクト作成の作業は 具象クラスに委ねられます ファクトリーの型 クラス それぞれは 特定のプロダクトの異種に対応します

クライアント・コードは コンストラクター呼び出し new 演算子 で直接プロダクトを作成する代わりにファクトリー・オブジェクトの作成メソッドを呼び出します ファクトリーはプロダクトの特定の異種に対応しているため すべてのプロダクトには互換性があります

クライアント・コードは その抽象インターフェイスを通じてのみファクトリーやプロダクトとやりとりします このため クライアント・コードはファクトリー・オブジェクトによって作成された任意のプロダクトの異種と動作します プログラマーがやるべきことは 新しい具象ファクトリー・クラスを作成し それをクライアント・コードに渡すことです

もし各種ファクトリー系のパターンやコンセプトの違いで迷った場合は ファクトリーの比較 をご覧ください

複雑度

人気度

使用例 Abstract Factory パターンは Swift コードではよく見かけます 多くのフレームワークやライブラリーが その標準コンポーネントを拡張したりカスタマイズするためにこのパターンを使います

見つけ方 このパターンは ファクトリー・オブジェクトを返すメソッドに注目すれば 簡単に見つけられます そしてファクトリーを使ってサブコンポーネントが作成されます

以下の例は Swift Playgroundsで利用できます。
Playgroundバージョンを作成してくれた Alejandro Mohamadに感謝します。

他言語での Abstract Factory

Abstract Factory を C# で Abstract Factory を C++ で Abstract Factory を Go で Abstract Factory を Java で Abstract Factory を PHP で Abstract Factory を Python で Abstract Factory を Ruby で Abstract Factory を Rust で Abstract Factory を TypeScript で