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 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!