매일 하나의 디자인 모델 을 배운다. - 5. 간단 한 공장 모델.
1. 간단 한 공장 모델 의 정의:
대상 인 스 턴 스 를 만 드 는 기능 을 제공 하 며 구체 적 인 실현 에 관심 을 가 질 필요 가 없다.생 성 된 실례 의 유형 은 인터페이스, 추상 클래스 일 수도 있 고 구체 적 인 클래스 일 수도 있다.
엄 밀 히 말 하면 간단 한 공장 은 23 가지 디자인 모델 에 속 하지 않 지만 작고 유연 하 며 코드 에서 도 대량으로 사용 된다.
1. 응용 장면
1) 격 리 를 완전히 밀봉 하고 구체 적 으로 실현 하려 면 외부 에서 인터페이스 로 만 패 키 징 체 를 조작 할 수 있 도록 간단 한 공장 을 선택 하여 클 라 이언 트 가 공장 을 통 해 해당 하 는 인 터 페 이 스 를 얻 도록 하고 구체 적 인 실현 에 관심 을 가 질 필요 가 없다.2) 대상 의 직책 을 집중 적 으로 관리 하고 통제 하려 면 간단 한 공장 을 선택 할 수 있다. 간단 한 공장 은 많은 관련 이 없 는 대상 을 만 들 수 있 고 대외 적 으로 대상 을 만 드 는 직책 을 간단 한 공장 에 집중 시 켜 집중 적 인 관리 와 통 제 를 실현 할 수 있다.
3. 코드 예제
과일 공장 이 있다 고 가정 하고 각종 과일 을 생산 합 니 다. 코드 는 다음 과 같 습 니 다.
1. 과일 인터페이스
public interface Fruit {
void print();
}
2. 각종 과일
//
public class Apple implements Fruit {
@Override
public void print() {
System.out.println("it's an apple");
}
}
//
public class Banana implements Fruit {
@Override
public void print() {
System.out.println("it's a banana");
}
}
//
public class Orangle implements Fruit {
@Override
public void print() {
System.out.println("it's an orangle");
}
}
//
public class Pear implements Fruit {
@Override
public void print() {
System.out.println("it's a pear");
}
}
3. 과일 공장
public class FruitFactory {
public static Fruit getFruitMethod1(Class extends Fruit> clzz) {
try {
return clzz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
4. 클 라 이언 트
public class Client {
public static void main(String[] args) {
Apple apple = (Apple) FruitFactory.getFruitMethod1(Apple.class);
apple.print();
Orangle orangle = (Orangle) FruitFactory.getFruitMethod1(Orangle.class);
orangle.print();
Banana banana = (Banana) FruitFactory.getFruitMethod1(Banana.class);
banana.print();
Pear pear = (Pear) FruitFactory.getFruitMethod1(Pear.class);
pear.print();
}
}
4. 단순 공장 의 장단 점
장점.
1) 포장 돕 기;2) 결합 해제.
결점.
1) 클 라 이언 트 의 복잡 도 를 증가 시 킬 수 있 습 니 다.만약 에 클 라 이언 트 매개 변 수 를 사용 하여 구체 적 인 실현 류 를 선택 하려 면 클 라 이언 트 로 하여 금 각 매개 변수의 구체 적 인 의 미 를 이해 하 게 해 야 한다. 이것 은 클 라 이언 트 가 선택 하 는 어려움 을 증가 하고 어느 정도 에 내부 실현 의 세부 사항 을 드 러 낼 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.