ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptデザインパターンの出現パターン入門_JavaScriptスキル

JavaScriptデザインパターンの出現パターン入門_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:24:091154ブラウズ

外観モードの説明

説明: アピアランス モードは、サブシステムまたはプログラムの複雑な構成のために提供される高レベルのインターフェイスです。

を使用すると、基礎となるプログラムまたはシステム インターフェイスに簡単にアクセスできます。

外観モードは、私たちが頻繁に遭遇するモードです。私たちが関与する機能には、複数のサブインターフェイスまたはサブシステムが必要になる場合があり、機能の 1 つは、複数のサブインターフェイスのうちの 1 つだけを必要とする場合があります。順次パッケージ。ビジネス機能がサブインターフェイスまたはサブシステムに直接対応する場合、開発者はビジネス プロセスがどのように進むか、その順序などを理解する必要がある場合があります。これには開発者がビジネスを理解する必要があり、クライアントのプログラミングも非常に複雑になります。

使用したいメソッドを具体的にカプセル化する層またはクラスがここにある場合、クライアント関数はこの中間層クラスと対話するだけで済みます。中間層クラスの対応するメソッドは、理解している関連開発者によって編成されます。カプセル化を行うと、プログラムは非常に単純になります。プログラマは、この関数に必要なメソッドを知るだけで済み、内部ロジックを知る必要はありません。

この中間層のクラスをアピアランスクラスと呼びます。これがアピアランスモードの考え方です。

シナリオの例:

1> マスター スイッチを例に挙げます。このマスター スイッチは、家のドアの照明や廊下のいくつかの照明を制御したり、テレビや冷蔵庫などへの電源を制御したりできます。 「ON」を押すと、すべてに電気が流れ、さらには直接光と熱が発生します。電気を発生させるためにメインスイッチのボタンがどのように出てくるのか、どのように押したらよいのかを知る必要はありません。とにかく押すだけで電気がつきます。

これらの照明、テレビなどは、私たちが使いたいインターフェースや小さなシステムです。このメインスイッチは私たちの外観クラスであり、それに直面して直接操作できます。

2> いくつかの機能部門がある会社のようなもので、上司は仕事のさまざまな側面の実行状況を知りたいとき、従業員にその状況を尋ねます。適切な人であれば、上司に直接答えることができます。この人に責任がない場合、その人は上司に、ああ、これの責任は誰にあるのかを伝え、上司はその人に、それがどれほど面倒かを聞きに行かなければなりません。 。

各部門に責任者がいる場合、上司は状況を理解するために直接その責任者に行くだけで済みます。上司は、責任者がこれをどのように知っているかを気にする必要はありません。彼は次の 1 つだけを知る必要があります。 2、3 件の状況と進捗状況を確認するだけです。

ソースコードの例

次に、2 番目のインスタンスのシナリオに従ってソース コードを実装します。

1. いくつかの部門の機能:

部門 1 (ビジネス部門):

コードをコピー コードは次のとおりです:

function BusinessDept() {
this.manager = 'マネージャー チェン' //責任者
; }
BusinessDept.prototype = {
MonthSales: function() {
console.log(this.manager '発言: 今月の売上は xxx');
}、
NextPlan: function() {
console.log(this.manager '言った: 次の計画はこんな感じです、xxxx');
}
}

第 2 部門 (研究開発部門):

コードをコピーします コードは次のとおりです:

関数 RDdept() {
this.manager = '黄マネージャー';
}
RDdept.prototype = {
進行状況: function() {
console.log(this.manager '発言: 現在のプロジェクトの状況と進行状況はこんな感じです xxx');
}、
deptPlan: function() {
console.log(this.manager '発言: 次の部門計画はこの xxx のようです');
}
}

上記は、各部門の責任者が上司に答えるべき質問です。

次に、上司が尋ねたい質問を整理するための外観クラスを作成します。

コードをコピー コードは次のとおりです:

関数 Facade() {
this.business = new BusinessDept() ;
this.rddept = 新しい RDdept();
}
Facade.prototype = {
DeptSituation: function() {
This.business.MonthSales() // 営業マネージャーが最初に話します;
This.rddept.progress();
}、
deptPlan: function() {
This.business.NextPlan() //次の計画を報告します;
This.rddept.deptPlan();
}
}

その後、上司は目の前にいるマネージャー 2 人を呼び、質問を始めました。

コードをコピーします コードは次のとおりです:

var facade = new Facade();
console.log('上司が尋ねました: あなたの部門の状況を紹介してください?');
facade.DeptSituation();
console.log('上司は「次の計画は何ですか?」と尋ねました。');
facade.deptPlan();

その他の指示

外観モードを使用すると、クラス間の依存関係が不要になるように、A に B を含める必要があり、B に A を含める必要があります。これは、クローズド変更の原則に違反します。中間層のアピアランス クラスのパッケージ化により、インターフェイス呼び出しがより単純になり、サブインターフェイスまたはサブシステム オブジェクトを使用した呼び出しがより自由かつ組織化されます。

外観パターンは、アーキテクチャ システムのパターン定義でよく使用され、多くの場合、利用可能なビジネス インターフェイスを整理するためにファサード レイヤーを追加します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。