정의: 팩토리 메소드 패턴은 단순한 팩토리 패턴을 더욱 추상화한 것입니다. 장점은 원래 코드를 수정하지 않고도 시스템에 새로운 제품을 도입할 수 있다는 것입니다. 열고 닫는 원리. 객체 인스턴스화를 위한 인터페이스를 만들고 하위 클래스가 인스턴스화할 클래스를 결정하도록 하여 클래스의 인스턴스화 프로세스가 하위 클래스로 지연될 수 있도록 합니다.
추상 팩토리(AbstractFactory): 호출자가 특정 팩토리의 팩토리 메소드에 액세스할 수 있는 인터페이스를 제공합니다. create the product
Concrete Factory(ConcreteFactory): 추상 팩토리에서 정의한 메소드를 구현하고 특정 제품의 생성을 완료합니다.
Abstract Product(Product): 제품의 사양을 정의하고 제품의 주요 특징과 성능을 설명합니다.
ConcreteProduct(콘크리트 프로덕트): 추상적인 제품을 정의하는 방법을 구현합니다. 특정 공장과 특정 제품이 일대일로 대응됩니다.
/** * 抽象工厂:提供具体工厂的共有方法 */ public interface Product { public void show(); } public class ConcreteProduct1 implements Product { @Override public void show() { System.out.println("具体产品1展示..."); } } public class ConcreateProduct2 implements Product { @Override public void show() { System.out.println("具体产品2展示..."); } } /** * 抽象工厂 */ public interface AbstractFactory { public Product createProduct(); } /** * 具体工厂1产生具体产品1 */ public class ConcreteFactory1 implements AbstractFactory { @Override public Product createProduct() { ConcreteProduct1 concreteProduct1 = new ConcreteProduct1(); System.out.println("具体工厂1创建具体产品1..."); return concreteProduct1; } public class ConcreteFactory2 implements AbstractFactory { @Override public Product createProduct() { System.out.println("具体工厂2产生具体产品2..."); return new ConcreateProduct2(); } }
호출 방법:
//获取具体产品1 Product product = new ConcreteFactory1().createProduct(); product.show(); Product product1 = new ConcreteFactory2().createProduct(); product1.show();
사용 단계:
팩토리 클래스(특정 팩토리)의 하위 클래스로 특정 제품 생성을 종료합니다. 이때 팩토리 클래스는 더 이상 모든 제품 생성을 담당하지 않고 특정 팩토리에서 구현해야 하는 인터페이스를 제공하므로 팩토리 메서드는 새 제품을 추가하므로 팩토리 클래스의 논리를 수정할 필요가 없지만 열기 및 닫기 원칙을 준수하는 새 팩토리 하위 클래스를 추가합니다.
6. 장점과 단점
위 내용은 Java 코드를 사용하여 팩토리 메소드 패턴을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!