前書き
比較的鮮やかな例えを見てみましょう。ファサードを、XXXX鉄道工学局などのバナーでマークできる建設現場の建物の表面と比較してみましょう。このより目を引く側面は、より多くの注目を集めることができます。人々が通り過ぎるとき建物のそばで外観を見ることができ、現時点では自身の構造の複雑さを理解していません。
プログラムの内部の複雑さを隠しながら、ファサードは外部クライアントに簡単にアクセスできるインターフェースも提供します。
構造設計パターン
ファサードモードは、シングルトンモードやファクトリモードとは異なり、構造モードです。
-
構造パターンは、オブジェクトとクラスを組み合わせてより大きな構造にする方法を説明します。
-
構造モードは、設計作業を簡素化できるモードであり、エンティティ間の関係を認識または表現するためのより簡単な方法を見つけることができます。
-
構造モードは、クラスモードとオブジェクトモードを統合したものです。クラスパターンは継承による抽象化を記述し、それによってより便利なプログラムインターフェイスを提供し、オブジェクトパターンはオブジェクトを接続してより大きなオブジェクトを形成する方法を記述します。
ファサードデザインパターンを理解する
-
サブシステム内のインターフェイスのグループに統合されたインターフェイスを提供し、クライアントがサブシステムをより簡単に使用できるように高レベルのインターフェイスを定義します。
-
ファサードによって解決される問題は、単一のインターフェイスオブジェクトを使用して複雑なサブシステムを表す方法です。実際、これはカプセル化サブシステムではなく、基盤となるサブシステムの組み合わせです。
-
サブシステムとクライアントの分離を促進します。
次の図は、理解を深めるのに役立つ場合があります。

参加者は、ファサード、クライアント、システムの3つです。
クライアント
ファサード
がインスタンス化されます。サブシステムに対応する機能を完了させるようにファサードに要求が行われます。
クライアントはファサードと対話するため、サブシステムと簡単に通信して、複雑さを気にせずに作業項目を完了できます。システム。
ファサード
リクエストを処理
するサブシステムを認識し、クライアントのリクエストを対応するサブシステムオブジェクトに組み合わせて委任するインターフェイス
システム
さまざまなタスクを担当するクラスのグループで表されるサブシステムの機能を実現します。
ファサードオブジェクトの割り当てを処理しますが、ファサードを知らず、参照しないでください。
簡単な理解:モデル全体の実装は、ファサードがクライアントのニーズを受け取った後に作業を完了するようにシステムを調整することです。
ある日、友達とKFCに行き、ウェイターにXXXの定食を注文しました。定食には、アイスコーラ、ハンバーガー、フライドポテトが入っています。ウェイターは注文のリクエストを聞いた後、頭を向けてHouchuにXXXの定食が必要だと言ったので、Houchuには4人が行動を開始しました。1人はコークス、1人はハンバーガー、1人はフライドポテト用、手羽先用。
この例では、あなたがクライアントで、ウェイターがファサードで、バックキッチンの4人が4つのサブシステムを作成し、彼らが協力してこのパッケージの制作を完了します。このように、ファサードモデルの理解は非常に単純で明確です。
Pythonはファサードモードを実装しています
#门面
class ProjectProcess(object):
def __init__(self):
print("get the project of the process")
def get_process(self):
self.req=Requirement()
self.req.getRequirementProcess()
self.dev=Develop()
self.dev.getDevelopProcess()
self.test=Test()
self.test.getTestProcess()
#子系统
class Requirement(object):
def __init__(self):
print("return the requirement of process")
def getRequirementProcess(self):
print("the requirement was complement 90%")
class Develop(object):
def __init__(self):
print("return the requirement of process")
def getDevelopProcess(self):
print("the develop was complement 30%")
class Test(object):
def __init__(self):
print("return the requirement of process")
def getTestProcess(self):
print("the test was complement 10%")
#客户端
if __name__ == '__main__':
pp = ProjectProcess()
pp.get_process()
最小知識の原則
(1)ファサードは、特定の機能を実装するサブシステムからクライアントを切り離すことができ、その背後にある設計原則は最小限の知識の原則です。
(2)システムを設計するときは、作成するオブジェクトごとに、相互作用するクラスの数と、相互に緊密に結合された多くのクラスが作成されないようにするための相互作用の方法を検討する必要があります。クラス間に多くの依存関係がある場合、システムの保守が困難になります。
[The Way of Infinite Testing]パブリックアカウントへの注目、[リソースの受信]への返信、
Pythonプログラミング学習リソースの乾物、
Python + AppiumフレームワークAPPUI自動化、
Python + Seleniumフレームワーク
WebUI自動化、Python + UnittestフレームワークAPIへようこそオートメーション、
リソースとコードは無料で送信されます〜
記事の下部に公式アカウントのQRコードがあります。WeChatでスキャンしてフォローするだけです。
備考:私の個人公開アカウントが正式に開設され、ビッグデータテスト、機能テスト、テスト開発、APIインターフェイスの自動化、テストの運用と保守、UI自動化テストなどのテストテクノロジーの共有に専念しています。WeChat検索パブリックアカウント:「WuliangThe Way of Testing」、または以下のQRコードをスキャンしてください。
注意を向けて、一緒に成長しましょう!