Factory Method パターンは、作成されるオブジェクトの正確なクラスを指定せずにオブジェクトを作成する必要性に対処します。これは、スーパークラスの複数のサブクラスがあり、特定の条件またはパラメータに基づいてオブジェクトの作成を特定のサブクラスに委任したい場合に便利です。
ファクトリ メソッド パターンは、スーパークラスでオブジェクトを作成するためのインターフェイスを提供しますが、サブクラスは作成されるオブジェクトのタイプを変更できます。これにより、クライアント コードが具体的なクラスと直接やり取りするのではなく、ファクトリ インターフェイスと確実にやり取りできるようになるため、疎結合が促進されます。
ファクトリー メソッド パターンの実践的な例は、ドキュメントを作成するためのフレームワークにあります。ドキュメントの種類 (PDF、HTML など) に応じて、対応するドキュメント ファクトリが、適切な書式設定と機能を備えたドキュメント オブジェクトを作成します。
コード内のファクトリーメソッドパターン
java // Product interface public interface Document { void open(); void close(); } // Concrete Product 1 public class PDFDocument implements Document { @Override public void open() { System.out.println("Opening PDF document"); } @Override public void close() { System.out.println("Closing PDF document"); } } // Concrete Product 2 public class HTMLDocument implements Document { @Override public void open() { System.out.println("Opening HTML document"); } @Override public void close() { System.out.println("Closing HTML document"); } } // Creator interface public interface DocumentFactory { Document createDocument(); } // Concrete Creator 1 public class PDFDocumentFactory implements DocumentFactory { @Override public Document createDocument() { return new PDFDocument(); } } // Concrete Creator 2 public class HTMLDocumentFactory implements DocumentFactory { @Override public Document createDocument() { return new HTMLDocument(); } } // Client code public class Client { public static void main(String[] args) { DocumentFactory factory1 = new PDFDocumentFactory(); Document pdfDocument = factory1.createDocument(); pdfDocument.open(); pdfDocument.close(); DocumentFactory factory2 = new HTMLDocumentFactory(); Document htmlDocument = factory2.createDocument(); htmlDocument.open(); htmlDocument.close(); } }
以上がファクトリ メソッド設計パターンの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。