디자인 모델 의 공장 모델 VS 추상 공장 모델
7630 단어 JAVA 디자인 모드
공장 모델 (Factory Pattern) 은 자바 에서 가장 자주 사용 하 는 디자인 모델 중의 하나 이다.이런 유형의 디자인 모델 은 창설 형 모델 에 속 하 는데, 이것 은 창설 대상 을 만 드 는 가장 좋 은 방법 을 제공한다.공장 모드 에서 우 리 는 대상 을 만 들 때 클 라 이언 트 에 대한 창설 논 리 를 노출 하지 않 고 공 통 된 인 터 페 이 스 를 사용 하여 새로 만 든 대상 을 가리킨다.
다음은 자동차 생산 공장 을 통 해 공장 모델 의 장단 점 을 체험 해 보 자.
(1) 자동차 인터페이스 정의
//
public interface ICar {
//
void running();
}
(2) 세 개의 실체 류 를 정의 하여 자동차 인 터 페 이 스 를 실현 한다.
//
public class Audi implements ICar {
@Override
public void running() {
System.out.println(" , 97# ");
}
}
//
public class Bus implements ICar {
@Override
public void running() {
System.out.println(" , 。");
}
}
//
public class Tractor implements ICar {
@Override
public void running() {
System.out.println(" , 。");
}
}
(3) 공장 류 를 정의 하여 자동 차 를 생산 한다.
//
public class CarFactory {
public static ICar createCar(String type){
ICar car = null ;
switch (type){
case "bus" :
car = new Bus();
break ;
case "audi" :
car = new Audi();
break ;
case "tractor" :
car = new Tractor();
break ;
}
return car ;
}
}
(4) 클 라 이언 트
public class Main {
public static void main(String[] args) {
// ,
ICar bus = CarFactory.createCar("audi");
bus.running();
}
}
실행 결과
, 97#
우리 가 예상 한 결과 에 이 르 렀 음 이 분명 하 다. 생산 된 자동 차 를 바 꾸 려 면 클 라 이언 트 의 CarFactory. createcar () 방법 중의 인 자 를 수정 하면 된다.
장점: 1. 호출 자가 대상 을 만 들 려 면 이름 만 알 면 됩 니 다.2. 확장 성 이 높 습 니 다. 제품 하 나 를 추가 하려 면 공장 류 만 확장 하면 됩 니 다.3. 제품 의 구체 적 인 실현 을 차단 하고 호출 자 는 제품 의 인터페이스 에 만 관심 을 가진다.단점: 한 제품 을 추가 할 때마다 구체 적 인 유형 과 대상 을 추가 하여 공장 을 실현 하여 시스템 중의 개 수 를 배로 증가 시 키 고 어느 정도 에 시스템 의 복잡 도 를 증가 하 는 동시에 시스템 의 구체 적 인 의존 도 를 증가 시 켰 다.이것 은 결코 무슨 좋 은 일이 아니다.
2. 추상 적 인 공장 모델
추상 적 인 공장 모델 (Abstract Factory Pattern) 은 하나의 슈퍼 공장 을 둘러싸 고 다른 공장 을 만 드 는 것 이다.이 슈퍼 공장 은 다른 공장 의 공장 이 라 고도 부른다.이런 유형의 디자인 모델 은 창설 형 모델 에 속 하 는데, 이것 은 창설 대상 을 만 드 는 가장 좋 은 방법 을 제공한다.추상 적 인 공장 모델 에서 인 터 페 이 스 는 관련 대상 을 만 드 는 공장 으로 명시 적 으로 그들의 종 류 를 지정 할 필요 가 없다.모든 생 성 된 공장 은 공장 모델 에 따라 대상 을 제공 할 수 있다.
이어서 자동차 생산 공장 은 계속 되 었 다.
(1) 자동차 생산 공장 을 추상적으로 추정한다.
//
public interface ICarFactory {
ICar createCar();
}
(2) 세 개의 공장 을 정의 하고 추상 적 인 공장 을 실현 한다.
//
public class AudiFactory implements ICarFactory{
@Override
public ICar createCar() {
return new Audi();
}
}
//
public class BusFactory implements ICarFactory{
@Override
public ICar createCar() {
return new Bus();
}
}
//
public class TractorFactory implements ICarFactory{
@Override
public ICar createCar() {
return new Tractor();
}
}
클 라 이언 트 테스트
public class Main {
public static void main(String[] args) {
ICarFactory factory = new AudiFactory(); //
ICar car = factory.createCar(); //
car.running(); //
}
}
우 리 는 이때 벤츠 차 를 추가 하려 면 공장 류 의 어떠한 코드 도 수정 할 필요 가 없다 는 것 을 알 게 되 었 다. 벤츠 류, 벤츠 공장 류 만 증가 하면 된다. 추상 적 인 공장 모델 은 공장 모델 에 비해 개방 - 폐쇄 원칙 에 더욱 부합 되 지만 더 많은 유형 도 증가 했다.