디자인 모델 (2) 추상 적 인 공장 모델

2957 단어
앞에서 우 리 는 공장 방법 모델 을 말 했 는데, 어떤 종류 만 생산 할 때 사용 할 수 있다.만약 우리 가 여러 종류의 제품 을 생산 해 야 한다 면 추상 적 인 공장 모델 을 사용 하 는 것 을 고려 할 수 있다.
추상 적 인 공장 모델 의 사용 상황 은 다음 과 같다.
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 () -> "   ";
    }
}

그렇다면 추상 적 인 공장 모델 의 단점 은 무엇 일 까?사실 위의 예 에서 우리 도 알 아 볼 수 있다.추상 적 인 공장 모델 로 새로운 제품 조합 을 만 드 는 것 은 매우 간단 하 다 (새로운 구체 적 인 공장 실현). 그러나 우리 가 새로운 제품 의 종 류 를 늘 리 려 면 코드 를 대량으로 변경 해 야 한다.예 를 들 어 우 리 는 지금 식 기 를 추가 해 야 한다. 그러면 위의 추상 적 인 공장 류, 세 가지 구체 적 인 유형의 코드 는 모두 변경 해 야 한다.실제 상황 에서 코드 개발 자 와 사용자 간 의 협정 을 파괴 하 는 경우 가 많다.
여기 서 추상 적 인 공장 모델 의 장단 점 과 사용 장면 도 나 오고 있다.만약 에 시스템 에 여러 가지 유형의 제품 이 필요 하고 제품 의 종류 가 상대 적 으로 고정 되 어 새로운 유형 이 나타 나 지 않 으 면 추상 적 인 공장 모델 을 사용 할 수 있다.이런 상황 에 부합 되 는 것 은 모두 추상 적 인 공장 을 사용 할 수 있다. 예 를 들 어 소프트웨어 를 위해 인 터 페 이 스 를 교체 할 수 있다. 인터페이스의 제목 표시 줄, 메뉴 표시 줄 등 구성 요소 가 상대 적 으로 고정 되 어 있 기 때문에 이것들 은 추상 적 인 공장 이 라 고 설명 할 수 있다. 그리고 모든 인터페이스 양식 은 구체 적 인 공장 을 실현 할 수 있다.

좋은 웹페이지 즐겨찾기