>  기사  >  Java  >  Java 코드를 사용하여 팩토리 메소드 패턴을 구현하는 방법

Java 코드를 사용하여 팩토리 메소드 패턴을 구현하는 방법

WBOY
WBOY앞으로
2023-05-16 17:46:15885검색

1. 팩토리 메소드 패턴 소개

정의: 팩토리 메소드 패턴은 단순한 팩토리 패턴을 더욱 추상화한 것입니다. 장점은 원래 코드를 수정하지 않고도 시스템에 새로운 제품을 도입할 수 있다는 것입니다. 열고 닫는 원리. 객체 인스턴스화를 위한 인터페이스를 만들고 하위 클래스가 인스턴스화할 클래스를 결정하도록 하여 클래스의 인스턴스화 프로세스가 하위 클래스로 지연될 수 있도록 합니다.

2. 팩토리 메소드 패턴 클래스 다이어그램 UML

Java 코드를 사용하여 팩토리 메소드 패턴을 구현하는 방법

3. 팩토리 메소드 패턴 역할 설명

추상 팩토리(AbstractFactory): 호출자가 특정 팩토리의 팩토리 메소드에 액세스할 수 있는 인터페이스를 제공합니다. create the product

Concrete Factory(ConcreteFactory): 추상 팩토리에서 정의한 메소드를 구현하고 특정 제품의 생성을 완료합니다.

Abstract Product(Product): 제품의 사양을 정의하고 제품의 주요 특징과 성능을 설명합니다.

ConcreteProduct(콘크리트 프로덕트): 추상적인 제품을 정의하는 방법을 구현합니다. 특정 공장과 특정 제품이 일대일로 대응됩니다.

Factory 메소드 패턴 구현:

/**
 * 抽象工厂:提供具体工厂的共有方法
 */
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();

사용 단계:

    추상 제품 클래스 생성 및 제품의 공개 메서드 정의
  • 구체적인 제품 클래스 생성(추상 제품 인터페이스 구현) 및 생성된 특정 제품 정의
  • 추상 팩토리 클래스를 생성하고 특정 팩토리의 공용 인터페이스를 정의합니다
  • 특정 팩토리 클래스를 생성하고 해당 특정 제품 인스턴스를 생성하는 메서드를 정의합니다.
  • 호출자가 특정 팩토리 클래스의 메서드를 호출합니다. 다양한 특정 제품의 인스턴스 생성
  • 5. 팩토리 패턴 다시 탐색

문제 해결 : 간단한 팩토리 클래스에 새 제품을 추가할 때 팩토리 클래스의 메소드 로직을 수정하는 메소드 로직 문제를 해결했습니다. 특별한 개폐 원리.

팩토리 클래스(특정 팩토리)의 하위 클래스로 특정 제품 생성을 종료합니다. 이때 팩토리 클래스는 더 이상 모든 제품 생성을 담당하지 않고 특정 팩토리에서 구현해야 하는 인터페이스를 제공하므로 팩토리 메서드는 새 제품을 추가하므로 팩토리 클래스의 논리를 수정할 필요가 없지만 열기 및 닫기 원칙을 준수하는 새 팩토리 하위 클래스를 추가합니다.

6. 장점과 단점

장점:

    높은 유연성으로 새로운 제품을 만들려면 해당 팩토리 클래스를 하나만 더 작성하면 됩니다.
  • 사용자는 공장 이름만 지시하면 됩니다. 원하는 제품을 얻으려면 제품의 구체적인 생성 과정을 안내할 필요가 없습니다
  • 단점:

    클래스 수가 너무 많아 복잡해지기 쉽습니다
  • 각 공장에서 한 종류의 제품만 생산하면 다음 단점은 추상 팩토리 패턴 솔루션을 사용할 수 있다는 것
  • 7. 응용 시나리오

고객은 제품을 만드는 공장 이름에만 관심이 있고 특정 제품을 알 필요가 없습니다. 제품명

위 내용은 Java 코드를 사용하여 팩토리 메소드 패턴을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제