3. 디자인 모델 의 공장 모델
1. 단순 공장 모델
간단 한 공장 은 사실 디자인 모델 이 아니 라 오히려 프로 그래 밍 습관 같다.
나의 이해: 간단 한 공장 모델 은 단지 류 를 예화 하 는 방법 [new ()] 을 공장 류 에 두 었 을 뿐이다.
example: 간단 한 자동차 공장 을 정의 하고 고객 의 수요 에 따라 서로 다른 자동 차 를 생산 합 니 다.
자.
1. 자동차의 인 터 페 이 스 를 정의 하 는데 기본 적 인 행동 방법 이 있다. 즉, 차 를 운전 할 수 있다 는 것 이다.
public interface ICar {
//car
void driver();
}
2. 간단 한 공장 을 정의 합 니 다. 주의 하 세 요. 이것 이 중요 합 니 다.고객 의 수요 에 따라 서로 다른 자동 차 를 생산 하 다.
public class SimpleFactory {
//
public ICar createVehicle(String type){
ICar car = null;
if("BMW".equals(type)){
car = new BMWCar();
}else if("QQ".equals(type)){
car = new QQCar();
}
return car;
}
}
3. BMW 차 정의
/**
*
*
*/
public class BMWCar implements ICar {
public void driver() {
System.out.println(" 。。。。");
}
}
4. 찌 질 이 를 위 한 키 리 QQ 를 정의 합 니 다.
/**
* QQ
*
*/
public class QQCar implements ICar{
public void driver() {
System.out.println("QQ 。。。。");
}
}
5. 준비 가 다 되 었 으 니 전문 점 을 하나 더 찾 아 고객 의 목 소 리 를 듣 고 고객 을 위해 서 비 스 를 제공 합 니 다.
/**
*
*
*/
public class CarStore {
private SimpleFactory factory;// 。
public CarStore(SimpleFactory factory) {
this.factory = factory;
}
//
public ICar orderVehicle(String type){
return factory.createVehicle(type);
}
}
6. 실행 해 보기
public class Main {
public static void main(String[] args) {
//
SimpleFactory factory = new SimpleFactory();
//
CarStore carStore = new CarStore(factory);
//
ICar bmw = carStore.orderVehicle("BMW");
bmw.driver();
// QQ
ICar qq = carStore.orderVehicle("QQ");
qq.driver();
}
}
이상 은 내 가 이해 하 는 가장 간단 한 공장 모델 이다.
모든 공장 모델 은 봉인 대상 의 창설 에 쓰 인 다.
2. 추상 공장 모델
추상 적 인 공장 모델 은 공장 방법 모델 의 업그레이드 버 전 으로 그 는 관련 되 거나 서로 의존 하 는 대상 을 만 드 는 데 사용 된다.그 와 공장 방법 모델 의 차 이 는 바로 공장 방법 모델 이 제품 등급 구 조 를 겨냥 한 것 이다.추상 적 인 공장 모델 은 여러 제품 의 등급 구 조 를 대상 으로 한다.프로 그래 밍 에서 보통 하나의 제품 구 조 는 하나의 인터페이스 나 추상 류 로 나타난다. 즉, 공장 방법 모델 이 제공 하 는 모든 제품 은 같은 인터페이스 나 추상 류 에서 파생 되 고 추상 공장 모델 이 제공 하 는 제품 은 서로 다른 인터페이스 나 이미지 추출 류 에서 파생 된다.
예 를 들 어 봅 시다.
1. 추상 공장 방법
/**
*
*/
public abstract class AbstractFactory {
// Vehicle
abstract ICar createVehicle(String type);
// airplane
abstract IAirplane createAirplane(String type);
}
2. 차 의 인 터 페 이 스 를 정의 합 니 다.
/**
*
*/
public interface ICar {
public void driver();
}
3. BMW 한 대 정의public class BMWCar implements ICar{
@Override
public void driver() {
System.out.println(" 。。。。");
}
}
4. QQ 정의/**
* QQ
*/
public class QQCar implements ICar{
@Override
public void driver() {
System.out.println("QQ 。");
}
}
5. 비행기의 인 터 페 이 스 를 정의 합 니 다./**
*
*/
public interface IAirplane{
public void fly();
}
6. 공군 1 호 정의/**
*
*/
public class AirForceOne implements IAirplane{
@Override
public void fly() {
System.out.println(" 。。。");
}
}
7. 정의/**
* 747
*/
public class Airbus747 implements IAirplane{
@Override
public void fly() {
System.out.println("747 。");
}
}
8. 저급 공장 을 정의 하고 추상 적 인 공장 에서 계승 하여 QQ 와 747 을 생산 할 수 있다./**
*
*/
public class LowLevelFactory extends AbstractFactory{
// QQ
ICar createVehicle() {
return new QQCar();
}
// 747
IAirplane createAirplane() {
return new Airbus747();
}
}
9. 고급 공장 을 정의 하고 추상 적 인 공장 에서 계승 하여 bm 와 빈 차 1 호 를 생산 할 수 있다.
/**
*
*/
public class HighLevelFactory extends AbstractFactory{
// bm
ICar createVehicle() {
return new BMWCar();
}
//
IAirplane createAirplane() {
return new AirForceOne();
}
}
10. 실행 하기
public class Main {
public static void main(String[] args) {
//
AbstractFactory hignFactory = new HighLevelFactory();
ICar bmw = hignFactory.createVehicle();
bmw.driver();
IAirplane airplane747 = hignFactory.createAirplane();
airplane747.fly();
//
AbstractFactory lowFactory = new LowLevelFactory();
ICar qq = lowFactory.createVehicle();
qq.driver();
IAirplane airone = lowFactory.createAirplane();
airone.fly();
}
}
나의 이해: 추상 적 인 공장 모델 은 추상 적 인 공장 류 가 있 고 계승 하 는 서브 공장 류 가 많아 야 한다.모든 종류의 제품, 예 를 들 어 차, 비행 기 는 모두 공공 인터페이스 가 있다.서로 다른 자 공장 은 서로 다른 제품 을 조합 하여 생산 할 수 있다.
복귀 탐색
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.