팩토리 패턴
1. 단순 팩토리
이해
간단 팩토리 패턴의 팩토리 클래스는 일반적으로 정적 메소드를 사용하며, 매개변수에 따라 다른 값을 반환합니다. 수신.객체 인스턴스.
코드 수정 없이는 확장이 불가능합니다.
예
제품 인터페이스
//제품 인터페이스
공용 인터페이스 ProductI {
public void productName()
}
제품 엔터티 클래스
공용 클래스 ProductA는 ProductI {
@Override
public void productName() {
System.out.println("product A")
}
}
을 구현합니다. public class ProductB는 ProductI {
@Override
public void productName() {
System.out.println("product B")
}
}
팩토리 클래스
// 단순 팩토리 패턴
public class Factory {
public ProductI create(String productName) {
switch (productName) {
case "A":
return new ProductA( );
케이스 "B":
return new ProductB();
return null
테스트 클래스
public static; void main(String[] args) {
팩토리 팩토리 = new Factory();
ProductI productA = Factory.create("A")
productA.productName()
//
ProductI productB = Factory.create("B");
productB.productName()
}
}
출력
제품 A
제품 B
팩토리 메소드
이해
팩토리 메소드는 제품별로 팩토리 클래스를 제공합니다. 다양한 제품 인스턴스는 다양한 팩토리 인스턴스를 통해 생성됩니다.
동일한 계층 구조에서는 모든 제품이 지원됩니다.
예제
제품 인터페이스, 제품 엔터티 클래스, 단순 팩토리는 동일합니다.
팩토리 인터페이스
공용 인터페이스 FactoryI {
// 팩토리의 목적은 제품 생산입니다.
public ProductI create()
}
팩토리 엔터티 class
public class FactoryA는 FactoryI {
@Override
public ProductI create() {
return new ProductA()
}
}
public class FactoryB; Implements FactoryI {
@Override
public ProductI create() {
return new ProductB()
}
}
테스트 클래스
// 팩토리 메서드 패턴
public class Client {
public static void main(String[] args) {
FactoryI FactoryA = new FactoryA()
ProductI productA = FactoryA.create()
productA.productName () ;
//
FactoryI FactoryB = new FactoryB()
ProductI productB = FactoryB.create();
제품 A
추상팩토리
이해하기
추상팩토리는 제품군의 개념을 다룹니다. 예를 들어, 각 자동차 회사는 자동차, 트럭, 버스를 동시에 생산하기를 원할 수 있으므로 각 공장에는 자동차, 트럭, 버스를 만드는 방법이 있어야 합니다.
제품군 컨셉에 맞춰 탄생한 제품으로, 새로운 제품군 추가는 쉽지만, 새로운 제품 추가는 불가능합니다.
팩토리 메소드와의 차이점은 추상 팩토리에는 여러 제품을 생산할 수 있는 여러 메소드, 즉 제품 클러스터가 있는 경우가 많다는 것입니다.
예제
추상 팩토리 클래스
// 와이어 팩토리 패턴
공용 인터페이스 AbstractFactory {
public ProductAI createProductA()
public ProductBI createProductB(); 🎜>}
공장 엔터티 클래스
public class Factory1은 AbstractFactory를 구현합니다. {
@Override
public ProductAI createProductA() {
return new ProductA1();
}
@Override
public ProductBI createProductB() {
새 ProductB1() 반환;
}
}
공용 클래스 Factory2는 AbstractFactory를 구현합니다. {
@Override
public ProductAI createProductA() {
return new ProductA2();
}
@Override
public ProductBI createProductB() {
새 ProductB2() 반환;
}
}
产품接구
//产품接口
공개 인터페이스 ProductBI {
public void productName();
}
//产품接구
공개 인터페이스 ProductAI {
public void productName();
}
产품实体类
공개 클래스 ProductA1은 ProductAI를 구현합니다. {
@Override
public void productName() {
System.out.println("product A1") ;
}
}
更多Java设计模式之工厂模式(三种) 关文章请关注PHP中文网!