팩토리 메소드 패턴은 생성될 객체의 정확한 클래스를 지정하지 않고 객체를 생성해야 하는 필요성을 해결합니다. 이는 슈퍼클래스의 하위 클래스가 여러 개 있고 특정 조건이나 매개변수에 따라 특정 하위 클래스에 객체 생성을 위임하려는 경우에 유용합니다.
팩토리 메소드 패턴은 슈퍼클래스에서 객체를 생성하기 위한 인터페이스를 제공하지만 서브클래스가 생성될 객체의 유형을 변경할 수 있도록 허용합니다. 이는 클라이언트 코드가 구체적인 클래스가 아닌 팩토리 인터페이스와 직접 상호작용하도록 보장하여 느슨한 결합을 촉진합니다.
팩토리 메소드 패턴의 실제 예는 문서 작성을 위한 프레임워크에 있습니다. 문서 유형(예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!