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 디자인 모드 - 플랜트 메소드 모드(2)공장 방법 모델은 공장 모델로 약칭하여 창설형 모델의 일종에 속한다. 공장 방법 모델에서 공장 부류는 제품 대상의 공공 인터페이스를 만들고 공장 부류는 구체적인 제품 대상을 생성한다.공장 부류에서 제품류의 실례화 조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.