Abstract Factory 모드 – Java 설계 모드 (3)
9043 단어 Java 디자인 모드
추상 공장 모델 소개
추상 공장 모드(Abstract Factory Pattern): 하나의 슈퍼 공장을 둘러싸고 다른 공장을 만든다.이 슈퍼 공장은 다른 공장의 공장이라고도 부른다.
분류: 작성 모드.추상적인 공장 모델에서 인터페이스는 관련 대상을 만드는 공장을 책임지고 현식으로 분류를 지정할 필요가 없다.생성된 모든 공장은 공장 모델에 따라 대상을 제공할 수 있다.의도: 구체적인 클래스를 지정하지 않고 관련되거나 서로 의존하는 일련의 인터페이스를 제공합니다.
주요 해결: 주로 인터페이스 선택의 문제를 해결한다.
언제 사용: 시스템의 제품은 한 제품족보다 많은데 시스템은 그 중의 한 제품족만 소비한다.
어떻게 해결: 한 제품족에서 여러 제품을 정의합니다.
역할 구조
추상 제품 종류: 각종 제품의 추상 인터페이스나 추상 종류;구체적인 제품 유형: 추상 제품 인터페이스(추상 유형)의 실현 유형;추상 공장류: 핵심, 추상 제품 생성에 사용되는 인터페이스 정의;구체적인 공장류: 추상적인 공장류를 계승하여 하나의 구체적인 제품을 생성한다(주의는 한 조, 이것은 매우 중요하다).
구체적 실현
1단계: 추상 제품 클래스를 작성합니다.
/**
*
* @author Administrator
*
*/
public interface IFruit {
void printName();
}
/**
*
* @author Administrator
*
*/
public interface IVeggie {
void printName();
}
2단계: 특정 제품 클래스를 작성합니다.
/**
* 。
* @author Administrator
*
*/
public class NorthernFruit implements IFruit {
private String name;
public NorthernFruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void printName() {
System.out.println(this.name);
}
}
/**
* 。
* @author Administrator
*
*/
public class SouthernFruit implements IFruit {
private String name;
public SouthernFruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void printName() {
System.out.println(this.name);
}
}
/**
* 。
* @author Administrator
*
*/
public class NorthernVeggie implements IVeggie {
private String name;
public NorthernVeggie(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void printName() {
System.out.println(this.name);
}
}
/**
* 。
* @author Administrator
*
*/
public class SouthernVeggie implements IVeggie {
private String name;
public SouthernVeggie(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void printName() {
System.out.println(this.name);
}
}
3단계: 추상적인 공장 종류를 창설한다.
/**
* 。 ,
* @author Administrator
*
*/
public interface IAbstractFactory {
public IFruit createFruit(String name);
public IVeggie createVeggie(String name);
}
4단계: 특정 플랜트 클래스를 생성합니다.
/**
* 。
* @author Administrator
*
*/
public class NorthernFactory implements IAbstractFactory {
@Override
public IFruit createFruit(String name) {
return new NorthernFruit(name);
}
@Override
public IVeggie createVeggie(String name) {
return new NorthernVeggie(name);
}
}
/**
* 。
* @author Administrator
*
*/
public class SouthernFactory implements IAbstractFactory {
@Override
public IFruit createFruit(String name) {
return new SouthernFruit(name);
}
@Override
public IVeggie createVeggie(String name) {
return new SouthernVeggie(name);
}
}
5단계: 테스트.
public class Main {
public static void main(String[] args) {
IAbstractFactory northernFactory = new NorthernFactory();
IFruit fruit1 = northernFactory.createFruit(" 1");
IVeggie veggie1 = northernFactory.createVeggie(" 1");
fruit1.printName();
veggie1.printName();
IAbstractFactory southernFactory = new SouthernFactory();
IFruit fruit2 = southernFactory.createFruit(" 2");
IVeggie veggie2 = southernFactory.createVeggie(" 2");
fruit2.printName();
veggie2.printName();
}
}
6단계: 출력을 검증합니다.
1
1
2
2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 디자인 모드 재시작 - Mediator Pattern하나의 중개 대상으로 일련의 대상 상호작용을 봉인하면 중개자는 각 대상이 현식적으로 서로 인용할 필요가 없게 하고 결합을 느슨하게 하며 그들 간의 상호작용을 독립적으로 바꿀 수 있다. 추상적인 중개자: 동료류 대상에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.