C++ 디자인 패턴 및 모양 패턴에 대한 간략한 소개

黄舟
풀어 주다: 2017-01-18 14:52:47
원래의
1593명이 탐색했습니다.

Facade: 하위 시스템의 인터페이스 집합에 대해 일관된 인터페이스를 제공합니다. 이 모드는 하위 시스템을 더 쉽게 사용할 수 있도록 하는 상위 수준 인터페이스를 정의합니다.

두 가지 주요 역할:

외관 클래스 Facade: 요청 처리를 담당하는 하위 시스템 클래스를 파악하고 고객 요청을 적절한 하위 시스템 객체로 프록시합니다.

서브시스템 컬렉션 SubSystem: 서브시스템의 기능을 구현하고 Facade 객체가 할당한 작업을 처리합니다. 참고: 하위 클래스에는 Facade에 대한 정보가 없습니다. 즉, Facade 객체에 대한 참조가 없습니다.

이 글에서는 펀드 구매를 예로 들어보겠습니다. 고객은 펀드(Facade)만 사고 팔면 되며 Stock 1, Stock 2, Stock 3 등(SubSystem)의 운영은 다음과 같이 처리됩니다. 펀드회사.

테스트 케이스:

[code]int main(){
    Fund fund;//基金对象(Facade)
    fund.fundBuy();//stock1 buy stock2 buy stock3 buy
    fund.fundSell(); //stock1 sell stcok2 sell stock3 sell

    return 0;
}
로그인 후 복사

외관 패턴 구현:

[code]//子系统不知道Facade的任何信息
//股票1号
class Stock1{
public:
    void sell(){
        std::cout << "stock1 sell\n";
    }
    void buy(){
        std::cout << "stock1 buy\n";
    }
};
//股票2号
class Stock2{
public:
    void sell(){
        std::cout << "stcok2 sell\n";
    }
    void buy(){
        std::cout << "stock2 buy\n";
    }
};
//股票3号
class Stock3{
public:
    void sell(){
        std::cout << "stock3 sell\n";
    }
    void buy(){
        std::cout << "stock3 buy\n";
    }
};

//基金类是Facade
class Fund{
public:
    Stock1 stock1;
    Stock2 stock2;
    Stock3 stock3;
    void fundSell(){
        stock1.sell();
        stock2.sell();
        stock3.sell();
    }
    void fundBuy(){
        stock1.buy();
        stock2.buy();
        stock3.buy();
    }
};
로그인 후 복사

외관 패턴은 언제 사용하나요?

디자인 초기 단계에서는 서로 다른 두 레이어를 의식적으로 분리해야 합니다.

개발 단계에서는 지속적인 재구성과 진화로 인해 하위 시스템이 점점 더 복잡해지는 경우가 많습니다.

레거시 대규모 시스템을 유지 관리하는 경우 원래 시스템의 매우 복잡한 코드나 잘못 설계된 코드를 사용하여 비교적 간단하고 명확한 인터페이스를 사용하여 새 시스템이 Facade 개체와 상호 작용할 수 있도록 할 수 있습니다.

위 내용은 C++ 디자인 패턴과 외관 패턴에 대한 간략한 이해 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿