모양 모드 설명
참고 : 외관 모드는 복잡한 서브 시스템 또는 프로그램 구성에서 제공하는 고급 인터페이스 인터페이스이므로 클라이언트를 사용하여 기본 프로그램 또는 시스템 인터페이스에 쉽게 액세스 할 수 있습니다.
외관 모드는 우리가 종종 만나는 패턴입니다. 우리가 종종 포함하는 기능에는 여러 하위 인터페이스 또는 서브 시스템이 포함될 수 있으며, 특정 기능은 하나 또는 여러 개의 여러 하위 인터페이스의 순서대로 캡슐화되도록 요구할 수 있습니다. 비즈니스 기능이 하위 인터페이스 또는 서브 시스템에 직접 해당하는 경우 개발자는 내부 컨텐츠를 상당히 이해해야 할 수도 있습니다. 비즈니스 프로세스가 어떻게 진행되는지, 주문 등을 이해해야 할 수도 있습니다.이를 통해 개발자는 비즈니스를 이해하고 클라이언트 프로그래밍을 상당히 복잡하게 만들어야합니다.
여기에 캡슐화에 사용하려는 방법을 구체적으로 제공하는 계층 또는 클래스가있는 경우 클라이언트 기능은이 중간 계층 클래스와 상호 작용하면되며 중간 계층 클래스의 해당 방법에는 비즈니스 조직 캡슐화를 이해하는 관련 개발자가 있습니다. 그러면 프로그램이 매우 간단해질 것입니다. 프로그래머는 자신의 기능에 필요한 방법 만 알아야하며 내부 논리를 알 필요가 없습니다.
이 중간 계층 클래스는 우리가 외관 클래스라고 부르는 것입니다. 이것은 외관 패턴의 아이디어입니다.
Scene Example:
1>. 예를 들어, 마스터 스위치 인이 마스터 스위치는 홈 문의 조명을 제어하고 홀의 조명을 제어하고 홈 TV, 냉장고 등의 전원 공급 장치를 제어 할 수 있습니다. 마스터 스위치의 버튼이 어떻게 나오는지 또는 관련 전기 기기에 어떻게 누르는 지 알 필요가 없습니다. 어쨌든, 당신은 직접 전화 할 것입니다.
이 조명, TV 등은 우리가 사용하려는 인터페이스와 작은 시스템입니다. 이 마스터 스위치는 우리의 외관이며 직접 작동 할 수 있습니다.
2>. 회사에 여러 기능 부서가있는 것은 좋은 일입니다. 상사가 일의 다양한 측면을 하나씩 구현해야 할 때, 그는 부서에 가서 직원 에게이 일이 어떻게 진행되고 있는지 물어볼 것입니다. 그가 올바른 사람에게 묻는다면, 그는 상사에게 직접 대답 할 수 있습니다. 이 사람이 책임이 있다면, 그는 또한 상사에게 "오,이 문제에 대한 책임이있는 사람, 그리고 상사는 그 사람에게 물어봐야한다면 너무 귀찮습니다."
각 기능 부서에 감독자가있는 경우 상사는 그냥 가서 상황을 찾을 수 있습니다. 상사는 담당자가 이것을 어떻게 알고 있는지 신경 쓰지 않아도됩니다. 그는 단지 1, 2 및 3 가지의 상황을 알고 있으며 진행 상황을 따르기를 원합니다.
인스턴스 소스 코드
이제 두 번째 인스턴스 시나리오에 따라 소스 코드를 구현하십시오.
1. 여러 부서별 기능 :
부서 1 (비즈니스 부서) :
코드 사본은 다음과 같습니다.
함수 businessDept () {
this.manager = 'Manager Chen'; // 담당자
}
BusinessDept.Prototype = {
Monthales : function () {
console.log (this.manager + 'say : 이번 달의 판매는 xxx');
},
다음 플랜 : function () {
console.log (this.manager + 'say : 다음 계획은 이와 같습니다, xxxx');
}
}
부서 2 (R & D 부서) :
코드 사본은 다음과 같습니다.
함수 rddept () {
this.manager = '관리자 Huang';
}
rddept.prototype = {
진행 : function () {
console.log (this.manager + 'say : 현재 프로젝트 상황과 진행 상황은이 xxx와 같습니다);
},
Deptplan : function () {
console.log (this.manager + 'say : 다음 부서 계획은이 xxx와 같습니다.);
}
}
위는 각 부서의 감독자가 상사에게 답변 해야하는 질문입니다.
다음으로, 상사가 묻고 싶은 질문을 구성하기 위해 외모 범주를 설정하십시오.
코드 사본은 다음과 같습니다.
기능 외관 () {
this.business = new BusinessDept ();
this.rddept = new rddept ();
}
Facade.prototype = {
deptsituation : function () {
this.business.monthsales (); // 영업 관리자가 먼저 말할 것입니다.
this.rddept.progress ();
},
Deptplan : function () {
this.business.nextplan (); // 다음 계획을보고합니다.
this.rddept.deptplan ();
}
}
다음으로, 상사는 그 앞에서 두 관리자에게 전화를 걸어 질문을 시작했습니다.
코드 사본은 다음과 같습니다.
var Facade = 새로운 외관 ();
Console.log ( '보스 질문 : 이제 부서의 상황을 소개합니까?');
facade.deptsituation ();
Console.log ( '보스 질문 : 다음 계획은 무엇입니까?');
Facade.deptplan ();
다른 지침
모양 모드를 사용하면 인터페이스 나 클래스가 분리 될 수 있으므로 클래스 간의 의존성이 필요하지 않습니다. 사용하기가 불필요한 경우, A는 B 또는 B를 포함해야합니다. 또는 B는 포함되어야합니다. 이는 폐쇄 수정의 원리를 위반합니다. 중간 레이어 모양 클래스 랩퍼를 사용하면 인터페이스 호출을 간단하게 만들 수 있으며 하위 인터페이스 또는 하위 시스템 객체 호출을 사용하면 더 자유롭고 구성됩니다.
외관 모드는 종종 프로그래밍에 나타나며 외관 모드는 종종 아키텍처 시스템의 패턴 정의에 사용됩니다. 당사의 시스템은 타사 인터페이스 서비스를 사용해야하며 종종 사용 가능한 비즈니스 인터페이스를 구성하기 위해 모양 레이어를 추가해야합니다.