안 드 로 이 드 디자인 모델 23 식 (5) - 공장 모델 (Factory)
이 편 에서 나 는 공장 모델 과 추상 적 인 공장 모델 두 개의 반 고 흐 를 함께 이야기 할 것 이다.
1. 단순 공장 모델
/**
* @author: hx
* @Time: 2019/5/6
* @Description: Producer
*/
public interface Car {
/**
*
*/
void brand();
}
/**
* @author: hx
* @Time: 2019/5/6
* @Description: Ferrari
*/
public class Ferrari implements Car {
@Override
public void brand() {
System.out.println(" ");
}
}
/**
* @author: hx
* @Time: 2019/5/6
* @Description: Porsche
*/
public class Porsche implements Car {
@Override
public void brand() {
System.out.println(" ");
}
}
/**
* @author: hx
* @Time: 2019/5/6
* @Description: CarFactory
*/
public class CarFactory {
public Car produce(String brand) {
switch(brand){
case "Ferrari":
return new Ferrari();
case "Porsche":
return new Porsche();
default:
return null;
}
}
}
간단 한 공장 에서 알 수 있 듯 이 모든 차 가 공유 하 는 인 터 페 이 스 를 추출 하고 인터페이스 에는 모든 차 의 공 통 된 속성 과 방법, 예 를 들 어 브랜드 나 자동 운전 등 이 포함 되 어 있다.차 마다 각자 자신의 방법 을 실현 하 는 내용.카 공장 에 서 는 브랜드 별로 차 를 생산 해 출하 한다.
2. 공장 방법 모델
일반 공장 방법 모드 에서 전달 하 는 문자열 이 잘못 되 어 대상 을 정확하게 만 들 지 못 하 는 것 을 방지 하기 위해 공장 방법 모드 는 여러 공장 방법 을 제공 하여 각각 대상 을 만 듭 니 다.
/**
* @author: hx
* @Time: 2019/5/6
* @Description: CarFactory
*/
public class CarFactory {
public Car produceFerrari(){
return new Ferrari();
}
public Car producePorsche(){
return new Porsche();
}
}
3. 정적 공장 방법 모델
이 모델 은 위 와 다 르 지 않 고 생산 방법 을 정태 적 인 방법 으로 바 꿀 뿐이다.
/**
* @author: hx
* @Time: 2019/5/6
* @Description: CarFactory
*/
public class CarFactory {
public static Car produceFerrari(){
return new Ferrari();
}
public static Car producePorsche(){
return new Porsche();
}
}
4. 추상 공장 모델
위의 공장 모델 은 우리 가 제품 을 새로 추가 해 야 할 때마다 원래 의 공장 류 안의 코드 를 수정 해 야 한 다 는 문 제 를 알 수 있다. 이렇게 하면 코드 를 확장 할 때 폐쇄 원칙 에 위배 된다.즉, 당신 이 원래 의 공장 에서 포르쉐 와 페라리 를 생산 하기 때문에 공장 안에 두 개의 생산 라인 이 있 습 니 다. 그러나 만약 당신 이 벤츠 를 생산 하고 싶다 면 어떻게 하 겠 습 니까? 당신 은 원래 의 공장 에서 개조 하고 생산 라인 을 새로 늘 려 야 합 니 다. 그러면 반드시 다른 두 개의 생산 라인 의 생산 업무 에 영향 을 줄 것 입 니 다. 그래서...우 리 는 모든 차 에 하나의 공장 을 직접 설립 하고 모든 공장 에 하나의 브랜드 의 차 만 생산 하 는 것 이 좋 겠 다. 그러면 하나의 브랜드 의 차 를 추가 하 는 것 도 다른 공장 에 영향 을 주지 않 는 다. 이것 이 바로 추상 적 인 공장 이다.다음은 코드 를 수정 하 겠 습 니 다.
생산 차 의 인 터 페 이 스 를 추가 하여 모든 공장 이 계승 하고 각각 차 를 생산 하 는 방법 을 실현 하도록 한다. 이렇게 하나의 유형 을 추가 하여 생산 된 인 터 페 이 스 를 직접 계승 하고 자신의 차 를 생산 한다. 어떠한 코드 도 수정 할 필요 가 없고 하나의 공장 과 하나의 차 유형 만 추가 해 야 한다.
/**
* @author: hx
* @Time: 2019/5/6
* @Description: Producing
*/
public interface Producing {
Car ProduceCar();
}
/**
* @author: hx
* @Time: 2019/5/6
* @Description: FerrariFactory
*/
public class FerrariFactory implements Producing {
@Override
public Car ProduceCar() {
return new Ferrari();
}
}
/**
* @author: hx
* @Time: 2019/5/6
* @Description: PorscheFactory
*/
public class PorscheFactory implements Producing {
@Override
public Car ProduceCar() {
return new Porsche();
}
}
public static void main(String[] args){
Producing ferrariFactory = new FerrariFactory();
Car ferrari = ferrariFactory.ProduceCar();
Producing porscheFactory = new PorscheFactory();
Car porsche = porscheFactory.ProduceCar();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.