iOS 응용 개발 에서 디자인 모델 중의 추상 적 인 공장 모델 의 실현 을 분석 하 다.

5804 단어 iOS디자인 모드
개술
추상 적 인 공장 모델 은 대상 의 창설 모델 로 공장 방법 모델 의 진일보 한 보급 이다.
만약 에 하나의 서브 시스템 이 일부 제품 대상 을 필요 로 한다 고 가정 하면 이런 제품 들 은 하나 이상 의 제품 등급 구조 에 속한다.그러면 이들 제품 을 소비 하 는 대상 의 책임 과 이들 제품 을 만 드 는 대상 의 책임 을 분리 하기 위해 추상 적 인 공장 모델 을 도입 할 수 있다.이렇게 되면 제품 을 소비 하 는 쪽 은 제품 의 생 성 작업 에 직접 참여 하지 않 고 공용 공장 인터페이스 에 필요 한 제품 을 요청 해 야 한다.
추상 적 인 공장 모델 을 사용 하면 같은(또는 비슷 한)등급 구 조 를 가 진 여러 제품 족 중의 제품 대상 의 생 성 문 제 를 처리 할 수 있다.다음 그림 에서 보 듯 이:
제품 역할 의 구조 도 에 따라 공장 역할 의 구조 설계 도 를 제시 하 는 것 은 어렵 지 않다.
이 를 통 해 알 수 있 듯 이 모든 공장 의 역할 은 두 개의 공장 방법 이 있 는데 각각 서로 다른 제품 등급 구조의 제품 대상 을 만 드 는 것 을 책임 진다.
추상 적 인 공장 의 기능 은 일련의 관련 대상 이나 서로 의존 하 는 대상 에 게 인 터 페 이 스 를 만 드 는 것 이다.이 인터페이스 안의 방법 은 임의로 쌓 는 것 이 아니 라 일련의 관련 되 거나 서로 의존 하 는 방법 이라는 것 을 주의해 야 한다.예 를 들 어 위의 예 에서 메인보드 와 CPU 는 모두 컴퓨터 한 대의 관련 대상 을 조립 하기 위해 서 이다.서로 다른 조립 방안 은 구체 적 인 컴퓨터 시 리 즈 를 대표 한다.
추상 적 인 공장 정의 의 일련의 대상 은 보통 관련 되 거나 서로 의존 하기 때문에 이런 제품 대상 은 하나의 제품 족 을 구성 했다.즉,추상 적 인 공장 은 하나의 제품 족 을 정의 했다.
이것 은 매우 큰 유연성 을 가 져 온다.제품 족 을 전환 할 때 서로 다른 추상 적 인 공장 을 제공 하여 실현 하면 된다.즉,지금 은 하나의 제품 족 을 하나의 전체 로 전환 하 는 것 이다.
핵심
먼저 위의 그림:
2016330150542261.png (432×188)
우 리 는 여전히 고 된 프로그램 원숭이 를 예 로 들 어 추상 적 인 공장 모델 의 핵심 개념 이다.위의 그림 을 통 해 가로 세로 2 차원 좌 표 는 평면 상의 유일한 점 을 확정 할 수 있다.이것 이 바로 추상 공장 의 핵심 이다.
제품 등급 구조:바로 계승 구조 입 니 다.위의 Android,IOS,PHP 와 같은 기능 은 추상 적 인 기능 류(예 를 들 어 앞의 ICode)에서 계승 되 었 고 이 추상 류 와 이런 하위 류 는 제품 등급 구 조 를 구성 했다.같은 이치 의 안 드 로 이 드 책,C 언어 책,스 크 립 트 책 은 하나의 도구 책 류 에서 계승 되 는데 이 도구 책 추상 류 는 이런 하위 클래스 와 등급 구 조 를 구성한다.
제품 족:추상 적 인 공장 모델 에서 제품 족 공식 정 의 는 같은 공장 에서 생산 되 고 서로 다른 제품 등급 구조 에 있 는 제품 을 말한다.예 를 들 어 위의 안 드 로 이 드 는 기능 등급 구조 에 위치 하고 안 드 로 이 드 책 은 도구 책 등급 구조 에 위치 하 며 안 드 로 이 드 기능 과 안 드 로 이 드 책 은 서로 다른 제품 구조 에 위치 한 제품 이지 만 모든 프로그램 원숭이 는 기능 과 도구 책 을 가 져 야 한다.예 를 들 어 안 드 로 이 드 프로그램 원숭이 는 안 드 로 이 드 기능 과 안 드 로 이 드 책 이 있어 야 하기 때문에 이 안 드 로 이 드 프로그램 원숭이 는 바로 제품 족 이다.
개념:일련의 관련 되 거나 상호 의존 대상 을 만 드 는 인 터 페 이 스 를 제공 합 니 다.구체 적 인 종 류 를 지정 할 필요 가 없습니다.추상 적 인 공장 모델 은 Kit 모델 이 라 고도 부 르 는데 대상 생 성 모델 이다.
중점:추상 공장 모델 구조 중요 핵심 모듈:
추상 공장:
하나의 그룹 이 하나의 제품 을 만 드 는 방법 에 사용 되 고 모든 방법 이 하나의 제품 에 대응 하 는 것 을 설명 합 니 다.
구체 적 인 공장:
추상 적 인 공장 에서 밝 힌 제품 을 만 드 는 방법 을 실현 하고 구체 적 인 제품 을 만 들 었 다.이런 제품 들 은 하나의 제품 족 을 구성 하고 모든 제품 은 특정한 제품 등급 구조 에 있다.
추상 적 인 제품:
그것 은 모든 제품 에 인 터 페 이 스 를 설명 하고 추상 적 인 제품 에서 제품 이 가지 고 있 는 업무 방법 을 설명 했다.
구체 적 인 제품:
구체 적 인 공장 생산의 구체 적 인 제품 대상 을 정의 하고 추상 적 인 제품 인터페이스 에서 성명 한 업무 방법 을 실현 한다.
사용 필드:
만들어 야 할 대상 이 서로 관련 되 거나 의존 하 는 제품 족 일 때 추상 적 인 공장 모델 을 사용 할 수 있다.대 백 화 는 하나의 계승 체계 에서 여러 등급 구조(즉,여러 개의 추상 적 인 유형 이 존재 하고 위의 기능 과 공구 서)가 존재 하 며 각 등급 구조 에 속 하 는 실현 류 간 에 일정한 관련 이나 제약 이 존재 하면 이미지 추출 공장 모델 을 사용 할 수 있다 는 뜻 이다.물론 같은 이 치 는 각 등급 구조 에서 의 실현 류 간 에 관련 이나 제약 이 없 으 면 여러 개의 독립 된 공장 을 이용 하여 제품 을 만 드 는 것 이다.
프로그램 인 스 턴 스
아래 의 실례 는 위의 그림 에서 설명 한 실현 코드 와 같이 구체 적 으로 설명 하지 않 는 것 이다.

package yanbober.github.io;
/* */
interface ICode {
    void coding();
}

class CodeImplAndroid implements ICode {
    @Override
    public void coding() {
        System.out.println("Coding Android!");
    }
}

class CodeImplPHP implements ICode {
    @Override
    public void coding() {
        System.out.println("Coding PHP!");
    }
}
/* */
interface INeedBook {
    void lookBook();
}

class NeedBookImplAndroid implements INeedBook {
    @Override
    public void lookBook() {
        System.out.println("Look Android Book!");
    }
}

class NeedBookImplPHP implements INeedBook {
    @Override
    public void lookBook() {
        System.out.println("Look PHP Book!");
    }
}
/* */
interface IAbstractFactory {
    ICode getCodingSkill();
    INeedBook getNeedBook();
}

class FactoryImplAndroid implements IAbstractFactory {
    @Override
    public ICode getCodingSkill() {
        return new CodeImplAndroid();
    }

    @Override
    public INeedBook getNeedBook() {
        return new NeedBookImplAndroid();
    }
}

class FactoryImplPHP implements IAbstractFactory {
    @Override
    public ICode getCodingSkill() {
        return new CodeImplPHP();
    }

    @Override
    public INeedBook getNeedBook() {
        return new NeedBookImplPHP();
    }
}

public class Main {
    public static void main(String[] args) {
        IAbstractFactory factory = new FactoryImplAndroid();
        ICode code = factory.getCodingSkill();
        INeedBook book = factory.getNeedBook();
        code.coding();
        book.lookBook();

        factory = new FactoryImplPHP();
        code = factory.getCodingSkill();
        book = factory.getNeedBook();
        code.coding();
        book.lookBook();
    }
}

기술 Tips:설정 과 반 사 를 사용 하여 자동 적응 을 실현 할 수 있 습 니 다.
총 결
추상 적 인 공장 모델 의 장점:
이전 과 마찬가지 로 구체 적 인 유형의 생 성 을 격 리 시 켜 고객 이 무엇 을 만 들 었 는 지 알 필요 가 없다.
새로운 제품 족 을 늘 리 는 것 은 매우 편리 하 므 로 기 존 시스템 을 수정 할 필요 가 없고'개폐 원칙'에 부합된다.
추상 적 인 공장 모델 의 단점:
새로운 제품 의 등급 구 조 를 증가 하 는 데 번 거 로 움 은 기 존의 시스템 에 대해 비교적 큰 수정 을 해 야 하고 심지어 추상 적 인 층 코드 를 수정 하여'개폐 원칙'에 위배 해 야 한다.

좋은 웹페이지 즐겨찾기