Latest web development tutorials

Facadeパターン

Facadeパターン(ファサード・パターン)は、クライアントがシステム・インタフェースにアクセスすることができます提供し、クライアントへのシステムの複雑さを隠します。 デザインパターンのこのタイプは、構造モデルに属し、それはシステムの複雑さを隠すために、既存のシステムへのインタフェースを追加します。

このモデルは、クライアントの要求と既存のシステムクラスのメソッドへのデリゲートの呼び出しに単純化されたアプローチを提供する単一のクラスを伴います。

入門

意図:サブシステムは、一貫したインターフェイスのインターフェイスのセットを提供し、スキーマが使用するサブシステムが容易になり、高レベルのインターフェイスの外観を定義します。

主な解決策は:複雑なシステムは、インターフェイスを使用してクライアントを単純化すると、内部のサブシステムへのアクセスの複雑さを軽減します。

使用するとき:1を、クライアントが複雑なリンク内部のシステムを知っている必要はありません、システム全体が唯一の「受付」を提供する必要がすることができます。2、入口には、システムを定義します。

修正方法:クライアントがシステムに接続されていない、クラスの外観と相まってシステム。

キーコード:クライアントシステムとの間と複雑さの層を追加し、この時系列、依存関係やその他の取り扱いを呼び出すされます。

応用例:1は、あなただけのレセプションのスタッフは非常に便利に対処するために聞かせ、登録、外来患者、指定された価格、診療、患者の患者または家族のメンバーは、フロントスタッフが設けられている場合、それは非常に複雑見つけるに行くことがあり、病院に行きます。2、JAVA 3階層開発モデル。

利点:1、システムを減らすためには相互に依存しています。2、柔軟性を高めます。 3、セキュリティを向上させます。

短所:あなたは物事をあまりにも面倒、継承の書き換えを変更したい場合は、開閉の原則に準拠していませんが不適切です。

使用シナリオ:1、外部モジュールへのアクセスを提供するためには、複雑なモジュールやサブシステムです。2、比較的独立したサブシステム。 3、低レベルの人事リスクの防止。

注:階層構造では、各レイヤの入力モードの外観を定義するためにシステムを使用することができます。

実現

私たちは、エンティティクラスのShapeインタフェースのShapeインタフェースと実装を作成します。 次のステップは、スキンクラスのShapeMakerを定義することです

ShapeMakerクラスこれらのクラスへのユーザーの呼び出しを表すためにエンティティクラスを使用しています。 FacadePatternDemo、結果を表示するShapeMakerクラスを使用して、私たちのデモクラス。

FacadeパターンUMLダイアグラム

ステップ1

インターフェイスを作成します。

Shape.java

パブリック・インタフェースShape {
   ボイドドロー();
}

ステップ2

インターフェイスを実装するエンティティクラスを作成します。

Rectangle.java

パブリッククラス長方形は{Shapeを実装します

   @Override
   公共ボイドドロー(){
      System.out.println( "長方形::ドロー()");
   }
}

Square.java

パブリッククラススクエア{Shapeを実装します

   @Override
   公共ボイドドロー(){
      System.out.println(「スクエア::ドロー() ")。
   }
}

Circle.java

パブリッククラスサークル{Shapeを実装します

   @Override
   公共ボイドドロー(){
      System.out.println( "サークル::ドロー()");
   }
}

ステップ3

クラスの外観を作成します。

ShapeMaker.java

パブリッククラスShapeMaker {
   プライベートシェイプサークル。
   プライベート形状の長方形。
   プライベートシェイプの正方形。

   公共ShapeMaker(){
      円=新しいサークル();
      四角形=新しいRectangle();
      四角=新スクエア();
   }

   公共ボイドdrawCircle(){
      circle.draw()。
   }
   公共ボイドdrawRectangle(){
      rectangle.draw()。
   }
   公共ボイドdrawSquare(){
      square.draw()。
   }
}

ステップ4

形状を描画するスキンクラスの様々なタイプの使用。

FacadePatternDemo.java

パブリッククラスFacadePatternDemo {
   公共の静的な無効メイン(文字列[] args){
      ShapeMaker shapeMaker =新しいShapeMaker();

      shapeMaker.drawCircle()。
      shapeMaker.drawRectangle()。
      shapeMaker.drawSquare()。		
   }
}

ステップ5

出力を確認します。

サークル::ドロー()
長方形::ドロー()
スクエア::ドロー()