工廠方法模式解決了建立物件的需要,而無需指定將建立的物件的確切類別。當您有超類別的多個子類別並希望根據某些條件或參數將物件建立委託給特定子類別時,這非常有用。
工廠方法模式提供了一個用於在超類別中建立物件的接口,但允許子類別變更將建立的物件的類型。這透過確保客戶端程式碼與工廠介面而不是直接與特定類別互動來促進鬆散耦合。
工廠方法模式的一個實際範例是用於建立文件的框架。根據文件的類型(例如 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中文網其他相關文章!