디자인 모델 (2) 추상 적 인 공장 모델
추상 적 인 공장 모델 의 사용 상황 은 다음 과 같다.
4. 567917. 시스템 은 여러 가지 제품 이 필요 하지만 매번 한 조 의 제품 만 필요 합 니 다
4. 567917. 제품 의 종류 가 비교적 고정 적 이 고 제품 의 조합 은 빈번하게 변화 할 수 있다
좀 애매 하 게 말 하 는 것 같 으 니 예 를 들 어 보 자.먼저 두 제품 의 인 터 페 이 스 를 정의 합 니 다. 하 나 는 양념 이 고 하 나 는 음식 입 니 다.
public interface Food {
String getFood();
}
public interface Spice {
String getSpice();
}
그리고 우 리 는 음식 과 양념 을 생산 하 는 추상 적 인 공장 을 정의 한다.
public interface AbstractFactory {
Spice getSpice();
Food getFood();
}
그리고 우 리 는 두 개의 구체 적 인 공장, 하 나 는 케이크 를 생산 하고 하 나 는 매 운 줄 기 를 생산 한다 고 정의 했다.자바 8 의 람 다 표현 식 을 사 용 했 습 니 다.
public class CakeFactory implements AbstractFactory {
@Override
public Spice getSpice() {
return () -> " ";
}
@Override
public Food getFood() {
return () -> " ";
}
}
public class LatiaoFactory implements AbstractFactory {
@Override
public Spice getSpice() {
return () -> " ";
}
@Override
public Food getFood() {
return () -> " ";
}
}
그리고 케이크 와 매 운 스틱 을 구 해 보 자.어떤 제품 (설탕 과 케이크, 고추, 매 운 스틱) 을 구 해 야 한다 면 추상 적 인 공장 모델 이 적합 하 다 는 것 을 알 수 있다.그리고 새로운 제품 조합 을 만 드 는 것 도 간단 하 다. 새로운 구체 적 인 공장 만 실현 하면 된다.
public void run() {
AbstractFactory factory = new CakeFactory();
Spice spice = factory.getSpice();
Food food = factory.getFood();
printSpiceAndFood(spice, food);
factory = new LatiaoFactory();
spice = factory.getSpice();
food = factory.getFood();
printSpiceAndFood(spice, food);
}
private static void printSpiceAndFood(Spice spice, Food food) {
System.out.println(" :" + spice.getSpice() + "," + " :" + food.getFood());
}
예 를 들 어 우 리 는 새로운 소금 에 절 인 오리알 공장 을 세 우려 고 하 는데 매우 간단 하 다.
public class SaltyEggFactory implements AbstractFactory {
@Override
public Spice getSpice() {
return () -> " ";
}
@Override
public Food getFood() {
return () -> " ";
}
}
그렇다면 추상 적 인 공장 모델 의 단점 은 무엇 일 까?사실 위의 예 에서 우리 도 알 아 볼 수 있다.추상 적 인 공장 모델 로 새로운 제품 조합 을 만 드 는 것 은 매우 간단 하 다 (새로운 구체 적 인 공장 실현). 그러나 우리 가 새로운 제품 의 종 류 를 늘 리 려 면 코드 를 대량으로 변경 해 야 한다.예 를 들 어 우 리 는 지금 식 기 를 추가 해 야 한다. 그러면 위의 추상 적 인 공장 류, 세 가지 구체 적 인 유형의 코드 는 모두 변경 해 야 한다.실제 상황 에서 코드 개발 자 와 사용자 간 의 협정 을 파괴 하 는 경우 가 많다.
여기 서 추상 적 인 공장 모델 의 장단 점 과 사용 장면 도 나 오고 있다.만약 에 시스템 에 여러 가지 유형의 제품 이 필요 하고 제품 의 종류 가 상대 적 으로 고정 되 어 새로운 유형 이 나타 나 지 않 으 면 추상 적 인 공장 모델 을 사용 할 수 있다.이런 상황 에 부합 되 는 것 은 모두 추상 적 인 공장 을 사용 할 수 있다. 예 를 들 어 소프트웨어 를 위해 인 터 페 이 스 를 교체 할 수 있다. 인터페이스의 제목 표시 줄, 메뉴 표시 줄 등 구성 요소 가 상대 적 으로 고정 되 어 있 기 때문에 이것들 은 추상 적 인 공장 이 라 고 설명 할 수 있다. 그리고 모든 인터페이스 양식 은 구체 적 인 공장 을 실현 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.