23 디자인 모델 의 외관 모델 (Facade)

디 렉 터 리 되 돌리 기
개술
Facade 는 구조 형 모델 중의 하나 로 서브 시스템 의 인터페이스 에 일치 하 는 인 터 페 이 스 를 제공 합 니 다. Facade 모델 은 고 층 인 터 페 이 스 를 정 의 했 는데 이 인 터 페 이 스 는 이 서브 시스템 을 더욱 쉽게 사용 할 수 있 습 니 다.
2 적용 성
4. 567917. 복잡 한 서브 시스템 에 간단 한 인 터 페 이 스 를 제공 하려 고 할 때.서브 시스템 은 종종 끊임없이 진화 하기 때문에 갈수 록 복잡 해진 다.대부분의 모드 를 사용 할 때 더 작은 클래스 가 생 긴 다.이 로 인해 서브 시스템 은 더욱 중용 성 을 가지 고 서브 시스템 에 대해 맞 춤 형 제작 을 하기 쉽 지만 이것 은 맞 춤 형 서브 시스템 이 필요 없 는 사용자 들 에 게 사용 상의 어려움 을 가 져 다 준다.Facade 는 간단 한 결 성 보 기 를 제공 할 수 있 습 니 다. 이 보 기 는 대부분의 사용자 에 게 충분 합 니 다. 더 많은 맞 춤 형 사용자 가 facade 층 을 넘 을 수 있 습 니 다
4. 567917. 고객 절차 와 추상 류 의 실현 부분 사이 에 큰 의존 도가 존재 한다.facade 를 도입 하여 이 서브 시스템 을 고객 및 기타 서브 시스템 과 분리 하면 서브 시스템 의 독립 성과 이식 성 을 높 일 수 있다
4. 567917. 계층 구조의 서브 시스템 을 구축 해 야 할 때 facade 모드 로 서브 시스템 의 각 층 의 입구 점 을 정의 합 니 다.만약 서브 시스템 간 에 서로 의존 하 는 것 이 라면, 당신 은 그것들 을 facade 를 통 해서 만 통신 하 게 하여, 그것들 간 의 의존 관 계 를 간소화 할 수 있 습 니 다
3 참가 자
4. 567917. Facade: 어떤 서브 시스템 류 가 처리 요 구 를 담당 하 는 지 알 고 있 습 니 다.고객 의 요청 을 적당 한 서브 시스템 대상 에 게 대리 합 니 다
Subsystemclasses: 서브 시스템 의 기능 을 실현 합 니 다.Facade 대상 이 파견 한 임 무 를 처리 하 다.facade 에 대한 정보 가 없습니다.즉, facade 를 가리 키 는 지침 이 없습니다
분류 도
5 코드 구현
//
// YJFacade.swift
// DesignPattern
//
// CSDN:http://blog.csdn.net/y550918116j
// GitHub:https://github.com/937447974/Blog
//
// Created by yangjun on 15/11/26.
// Copyright © 2015    . All rights reserved.
//

import Cocoa

///   A  
private protocol ServiceProtocolA {

    func methodA()

}

/// ServiceA   
private class ServiceA: ServiceProtocolA {

    func methodA() {
        print("    A")
    }

}

// MARK: -

///   B  
private protocol ServiceProtocolB {

    func methodB()

}

/// ServiceB   
private class ServiceB: ServiceProtocolB {

    func methodB() {
        print("    B")
    }

}

// MARK: -

/// Facade              。                 。
private class Facade {

    ///   A
    let sa: ServiceProtocolA = ServiceA()
    ///   B
    let sb: ServiceProtocolB = ServiceB()

    // MARK:   A
    func methodA() {
        //     
        sa.methodA()
        sb.methodB()
    }

    // MARK:   B
    func methodB() {
        sb.methodB()
    }
}

// MARK: -

///     
class YJFacade: YJTestProtocol {

    func test() {
        let facade = Facade()
        facade.methodA();
        facade.methodB();
    }
}

 
기타
소스 코드
Framework
문서 수정 기록
시간.
묘사 하 다.
2015-11-27
박문 완성
판권 소유
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog

좋은 웹페이지 즐겨찾기