현대 건축에서의 입면 디자인 모델++

입면 디자인 모델은 구조 디자인 모델로 복잡한 시스템에 통일된 인터페이스를 제공하는 데 쓰인다.그것은 건축 건축 중의 입면과 같고 입면은 하나의 대상으로 정면 인터페이스를 충당하여 더욱 복잡한 하층 시스템을 차단한다.C++의 모양새 디자인 모드는 다음과 같습니다.
  • API 마스킹과 더 복잡한 구성 요소의 상호작용을 단순화하여 소프트웨어 라이브러리의 가독성과 가용성을 향상시킵니다.
  • 더욱 통용되는 기능을 위해 상하문에 특정한 인터페이스를 제공한다.
  • 는 단편 또는 긴밀한 결합 시스템이 더욱 광범위하게 재구성되는 기점으로 더욱 느슨한 결합에 유리한 코드이다.솔직히 말하면 나조차도 이 점을 이해하지 못한다.나는 방금 위키백과에서 이것을 복제했다.
  • /!\: This article has been originally published on my blog. If you are interested in receiving my latest articles, please sign up to my newsletter.


    우리가 계속하기 전에, 나는 Facade의 맞춤법, 즉 'Façade' 를 바로잡을 것이다. & 그것의 발음은 'Fa;sa;d' 이다.대부분의 유럽 언어에서 알파벳 C 아래에 붙인 갈고리나 꼬리를 Acedilla라고 하는데 이 알파벳의 발음 변화를 나타내는 데 쓰인다.우리는 그것을 상세하게 토론하지 않을 것이다. 그렇지 않으면 우리는 문제를 낼 것이다.
    참고로 구조 설계 모델에 관한 다른 글을 아직 읽지 않았다면 다음은 목록입니다.
  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy
  • 이 시리즈에서 본 코드 세션은 복잡하지 않고 간략합니다.그래서 나는 override, final, public, (while inheritation) 같은 키워드를 사용하지 않는 것을 자주 본다. 단지 하나의 표준 화면 크기에서 코드를 촘촘하고 사용하기 쉽기 위해서이다(대다수 경우).나도 struct를 더 좋아한다. class는 때때로 "public:"를 쓰지 않고 줄을 저장하고 일부러 놓친다virtual destructor, 구조 함수copy constructor, 접두사std::, 동적 메모리를 삭제한다.나는 또한 내가 실용적인 사람이라고 생각하고 가능한 한 간단한 방식으로 생각을 표현하고 표준적인 방식이나 행화가 아니라 희망한다.
    참고:
  • 만약 네가 여기서 직접 걸려 넘어진다면, 나는 네가 먼저 통과할 것을 건의한다What is design pattern?. 설령 그것이 보잘것없다 하더라도.나는 이것이 네가 이 화제에서 더 많은 탐색을 하도록 격려할 것이라고 믿는다.
  • 이 시리즈에서 만났던 모든 코드는 C++20으로 컴파일되었습니다. (대부분의 경우 Modern C++ C++17 이전의 기능을 사용했지만.)따라서 최신 컴파일러에 접근할 수 없으면 https://wandbox.org/ 을 사용할 수 있으며, 보스 라이브러리도 미리 설치되어 있습니다.

  • 의 의도

    To provide unified interface by hiding system complexities.

  • 이것은 지금까지 내가 만난 가장 간단하고 가장 간단한 디자인 모델이다.
  • 다시 말하면Facade 디자인 모델은 대량의 복잡한 코드를 통해 간단하고 알기 쉬운 인터페이스를 제공하는 것이다.

  • C 언어의 Facade 디자인 모드 예제++
  • 당신이 스마트 주택을 세웠다고 상상해 보세요. 모든 것이 리모컨에 있어요.그래서 전등을 켜려면 전등 켜기 버튼을 눌러라. 텔레비전, 에어컨, 알람시계, 음악 등도 마찬가지다.
  • 집을 떠날 때 100개의 버튼을 눌러서 모든 것이 닫혔는지 확인해야 한다. 모든 것이 잘 되어 있다. 나처럼 게으르면 좀 짜증날 수도 있다.
  • 그래서 나는 떠나고 돌아오는 입면을 정의했다.(모양새 기능은 버튼...)을 나타냅니다.그래서 내가 오고 떠날 때 나는 전화 한 통만 하면 모든 것을 잘 처리할 거야...
  • // Stolen from: https://en.wikibooks.org/wiki/C%2B%2B_Programming/Code/Design_Patterns
    struct Alarm {
        void alarm_on()    { cout << "Alarm is on and house is secured"<<endl; }
        void alarm_off() { cout << "Alarm is off and you can go into the house"<<endl; }
    };
    
    struct Ac {
        void ac_on()    { cout << "Ac is on"<<endl; }
        void ac_off()    { cout << "AC is off"<<endl; }
    };
    
    struct Tv {
        void tv_on()    { cout << "Tv is on"<<endl; }
        void tv_off()    { cout << "TV is off"<<endl; }
    };
    
    struct HouseFacade {
        void go_to_work() {
            m_ac.ac_off();
            m_tv.tv_off();
            m_alarm.alarm_on();
        }
        void come_home() {
            m_alarm.alarm_off();
            m_ac.ac_on();
            m_tv.tv_on();
        }
    private:
        Alarm   m_alarm;
        Ac      m_ac;
        Tv      m_tv;
    };
    
    int main() {
        HouseFacade hf;
        //Rather than calling 100 different on and off functions thanks to facade I only have 2 functions...
        hf.go_to_work();
        hf.come_home();
        return EXIT_SUCCESS;
    }
    
  • 우리가 방금 서로 다른 비관련 클래스를 HouseFacade에 통합한 것을 주의하십시오.우리는 또한 다중성turn_on()turn_off() 방법을 가진 인터페이스를 사용하여 각자subclasses에 덮어쓰기Ac, Tv, Alarm 대상의 집합을 사용하여 Composite Design Pattern를 추가하여 더욱 복잡도를 얻을 수 있다.
  • 그러나 이것은 시스템을 더욱 복잡하게 하고 학습 곡선을 증가시킬 것이다.이것은 최초로 사용한 입면 디자인 모델과 정반대다.

  • 입면 디자인 모델의 장점
  • Facade는 복잡한 서브시스템을 포장하여 서브시스템을 쉽게 사용할 수 있도록 더 높은 수준의 인터페이스를 정의했습니다.
  • 이것은 서브시스템을 성공적으로 이용하는 데 필요한 학습 곡선을 감소시켰다.

  • FAQ 요약
    Facade는 여러 가지 클래스를 포함하는 클래스입니까?
    그래.그것은 응용 프로그램의 많은 하위 시스템의 패키지이다.
    무엇이 그것을 하나의 디자인 모델로 만들었습니까?나에게 있어서 이것은 마치 일반적인 수업과 같다.
    모든 디자인 모델도 일반적인 유형이다.
    입면 디자인 모델의 실제 용례는 무엇입니까?
    Facade 디자인 모델의 대표적인 응용 프로그램 중 하나는 Linux나 Windows의 콘솔/터미널/명령 프롬프트가 운영체제에서 제공하는 기계 기능에 접근하는 통일된 방식이다.
    어댑터와 입면 디자인 모델 간의 차이는?
    Adapter는 여러 클래스를 나타내는 하나의 클래스를 캡슐화합니다.

    좋은 웹페이지 즐겨찾기