디자인 모델 (2) - 추상 공장 및 진화 의 길
7646 단어 디자인 모드공장 모드추상 공장공장 모델 이 진화 하 다.
본 고 는 블 로 거들 이 창작 한 글 이 므 로 전재 가 필요 하 다 면 출처 를 밝 혀 주 십시오 (https://blog.csdn.net/F1004145107/article/details/99861531)
KeyBoard87
, KeyBoard104
구체 적 인 제품 실현 유형: Razer87
, Cherry87
, Razer104
, Cherry104
//87
public interface KeyBoard87 {
void introduce87();
}
// 87
public class Razer87 implements KeyBoard87 {
@Override
public void introduce87() { System.out.println(" 87 "); }
}
// 87
public class Cherry87 implements KeyBoard87 {
@Override
public void introduce87() { System.out.println(" 87 "); }
}
//104
public interface KeyBoard104 {
void introduce104();
}
// 104
public class Razer104 implements KeyBoard104 {
@Override
public void introduce104() { System.out.println(" 104 "); }
}
// 104
public class Cherry104 implements KeyBoard104 {
@Override
public void introduce104() { System.out.println(" 104 "); }
}
공장 의 모든 코드, 여 기 는 공장 방법 과 가장 큰 차이 점 입 니 다. 한 공장 에서 여러 가지 같은 계열 의 제품 을 생산 합 니 다. 한 공장 의 인터페이스: KeyBoardFactory
구체 적 인 공장 의 실현 유형: RazerFactory
, CherryFactory
// :
public interface KeyBoardFactory {
KeyBoard87 createKeyBoard87();
KeyBoard104 createKeyBoard104();
}
// : 87 104
public class RazerFactory implements KeyBoardFactory {
// 87
@Override
public KeyBoard87 createKeyBoard87() { return new Razer87(); }
// 104
@Override
public KeyBoard104 createKeyBoard104() { return new Razer104();
}
// : 87 104
public class CherryFactory implements KeyBoardFactory {
// 87
@Override
public KeyBoard87 createKeyBoard87() { return new Cherry87(); }
// 104
@Override
public KeyBoard104 createKeyBoard104() { return new Cherry104(); }
테스트 코드 public class Demo {
public static void main(String[] args) {
// Razer87
RazerFactory razerFactory = new RazerFactory();
KeyBoard87 keyBoard87 = razerFactory.createKeyBoard87();
keyBoard87.introduce87();
// Razer104
KeyBoard104 keyBoard104 = razerFactory.createKeyBoard104();
keyBoard104.introduce104();
// Cherry87
CherryFactory cherryFactory = new CherryFactory();
keyBoard87 = cherryFactory.createKeyBoard87();
keyBoard87.introduce87();
// Cherry104
keyBoard104 = cherryFactory.createKeyBoard104();
keyBoard104.introduce104();
}
}
출력 결과뇌 사 87 키 건반
뇌 사 104 키 건반
앵두 87 키 키보드
앵두 104 키 키보드
추상 적 인 공장 의 사고방식 을 살 펴 보 자. 1. 우 리 는 뇌 사 87 키 와 체 리 87 키 가 모두 공 통 된 특성 을 가지 고 있다 는 것 을 발견 했다. 그것 이 바로 87 의 키보드 이다. 그러면 우 리 는 이 특성 을 하나의 인터페이스 로 추상 화하 고 구체 적 인 제품 으로 하여 금 이 인터페이스 와 특성 을 실현 하 게 한다. 2. 공장 방법 모델 에 따라 우리 가 정의 해 야 할 것 은 레이 사 87 공장 과 레이 사 104 공장 이다. 그러나 우 리 는 그들 이 모두 레이 사 계열 의 제품 이라는 공통점 을 발견 했다. 그러면 우 리 는 이 특성 을 새로운 공장 레이 사 공장 으로 추상 화 할 것 이다. 3. 뇌 사 공장 이 추상 화 되 었 으 니 우 리 는 왜 뇌 사 87 과 104 의 생산 을 모두 뇌 사 공장 에 두 지 않 았 을 까? 따로 공장 을 세 울 필요 가 없다. 4. 호출 시 우 리 는 이 브랜드 공장 을 설립 하 는 대상 만 있 으 면 이 브랜드 의 모든 제품 을 생산 할 수 있다. 우리 가 추상 적 인 공장 을 언제 사용 하 는 지 에 대해 서 는 모두 가 분명 해 야 한다. 상기 장면 이 나타 나 면 추상 적 인 공장 을 주저 하지 않 고 사용 해 야 한다. 간단 한 공장 → 공장 방법 → 추상 적 인 공장 을 통 해 한 걸음 한 걸음
//
public class Keyboard {}
//
public class SimpleFactory {
public static Keyboard getKeyboard (String name) {}
}
추상 적 인 공장 을 나타 낸다. //
public interface Keyboard {}
//
public class Cherry extends Keyboard{}
public class Razer extends Keyboard {}
//
public interface KeyboardFactory {}
//
public class CherryFactory implements KeyboardFactory{}
public class RazerFactory implements KeyboardFactory{}
공장 방법 //87
public interface KeyBoard87 {}
// 87
public class Razer87 implements KeyBoard87 {}
public class Cherry87 implements KeyBoard87 {}
//104
public interface KeyBoard104 {}
// 104
public class Razer104 implements KeyBoard104 {}
public class Cherry104 implements KeyBoard104 {}
// ,
public interface KeyBoardFactory {
KeyBoard87 createKeyBoard87();
KeyBoard104 createKeyBoard104();
}
//
public class RazerFactory implements KeyBoardFactory {
// 87
@Override
public KeyBoard87 createKeyBoard87() { return new Razer87(); }
// 104
@Override
public KeyBoard104 createKeyBoard104() { return new Razer104();
}
public class CherryFactory implements KeyBoardFactory {
@Override
public KeyBoard87 createKeyBoard87() { return new Cherry87(); }
@Override
public KeyBoard104 createKeyBoard104() { return new Cherry104(); }
}
내 가 보기에 하나의 구조 가 가장 중요 한 것 은 그의 건장 성과 확장 성 이다. 그 중에서 건장 성 이 가장 앞 에 있다. 만약 에 당신 의 디자인 이 사용자 로 하여 금 매우 편리 하 게 확장 할 수 있 지만 내부 의 구 조 를 파괴 할 수 있다 면 이 디자인 은 반드시 실패 할 것 이다. 왜냐하면 당신 의 디자인 은 최종 적 으로 온라인 플랫폼 에 배 치 될 것 이 고 온라인 플랫폼 은 파괴 되 는 것 을 허락 하지 않 기 때문이다. 로 마 는 하루 에 완 성 된 것 이 아니 라 완 선 된 시스템 도 개발 초기 에 디자인 된 것 이 아니다. 우 리 는 후기 에 끊임없이 최적화 되 고 교체 되 어 우리 의 시스템 을 보완 해 야 한다. 시스템 이 일정한 규모 로 발전 할 때 우 리 는 중요 한 기능 을 추출 하여 하나의 구성 요 소 를 형성 해 야 한다. 우리 가 모든 구성 요 소 를 한데 모 을 때 바로 우리 의 시스템 이다.저 는 디자인 할 때 이 구성 요 소 를 '대중' 에 게 어떻게 사용 할 수 있 는 지 생각 하 는 습관 이 있 습 니 다. 여기 서 대중 은 현재 와 미래의 동 료 를 말 합 니 다. 그들 이 현재 업무 장면 에 따라 그들 이 필요 로 하 는 것 을 신속하게 맞 출 수 있 도록 하 는 방법 입 니 다. 여기 서 우 리 는 충분 한 우수한 구 조 를 설계 하여 구성 요소 의 신속 한 확장 을 지탱 해 야 합 니 다. 공장 방법 → 추상 공장 에 대해 우리 가 위 에서 말 한 것 은 이미 매우 명확 하 다. 그러나 위 에서 중점 을 두 지 않 은 것 은 추상 이다. 구조의 진화 의 길 은 서 천 에서 경 로 를 얻 는 길 과 같다. 우 리 는 우리 의 목표 (서 천) 를 명 확 히 알 아야 한다. 중간 에 여러 가지 방식 으로 우리 의 목표 (법보) 를 달성 해 야 한다.내 가 보기에 추상 은 구조 진 화 를 추진 하 는 중요 한 보물 이다. 여러분 들 이 위의 구조 코드 를 통 해 간단 한 공장 → 공장 방법의 진 화 는 바로 서로 다른 제품 을 서로 다른 공장 에 두 고 생산 하 는 것 이 라 고 믿 습 니 다. 우리 가 사용 하 는 방법 은 추상 적 이 고 공 통 된 특성 을 추출 하여 기준 을 형성 하 는 것 입 니 다.우 리 는 제품 의 생산 을 분 리 했 지만 모든 공장 과 제품 이 우리 의 요구 에 부합 하도록 기준 을 제정 해 야 한다 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.