デザインパターン Facade プログラミング

Facadeパターンの使い道をコードとクラス図で説明します。

投稿日:

Facadeパターンはどんな役に立つか?

簡単にいうと、複数の処理のまとめ役。
なので、依頼1つでいろんな仕事をやってくれる点で役に立つ。

Facadeパターンの要件

  • Facadeクラスはあくまでサブシステム内部に仕事を投げるだけで複雑な実装は持たない。
  • Facadeクラスをサブシステム自体が利用する事はない。
  • Facadeパターンはサブシステムの直接使用を妨げない。

クラス図

Facadeパターンのクラス図


引用元:Wiki – Facadeパターン

今回説明するコードのクラス図


Librarian(Facade)がBookListとLendingList(サブシステム)を持っているのは立場上の仕様であり、窓口になって利用するという実装自体に変わりはありません。

クラス図の各役割

Facade:Librarianクラス
サブシステム:BookListクラス、LendingListクラス
クライアント:Visitorクラス

各クラスの関わり

  • Librarian(司書)は本を探す役割を引き受けることができる。
  • Visitor(利用者)はLibrarianに本を探すことを依頼できるし、自分で探すこともできる。
  • BookList(貯蔵本台帳)とLendingList(貸出帳)は、LibrarianまたはVisitorから利用される。

コード

Librarian.java

BookList.java

LendingList.java

Visitor.java

Main.java

※山田くん、木下くんのtargetBookNameを変更して、動作を確認してみてください。

Github

Facade Pattern – Librarian

使いどころ

複数の処理を呼び出す一連のコードを色んな箇所に書き始めたら、
Facadeパターンを使うことを検討してみて下さい。

ただし要件にある通り、複雑なロジックを含んではならないため、
あくまで、処理の束ね役に徹することが求めれます。

参考

Wiki – Facadeパターン

コードは以下を基に改造しました。
TECH SCORE – Facadeパターン

言わずと知れたデザインパターンの良書(全23パターンが網羅されている)
書籍 – 増補改訂版 Java言語で学ぶデザインパターン入門

-デザインパターン, Facade, プログラミング
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【Node.js】Excel⇔JSON変換する方法

やること 1.ExcelファイルをJSONで取得。 2.JSONの編集後、新しいExcelファイルに出力する。 環境 Node.js ・インストール  https://nodejs.org/ja/   …

結城浩氏のPrototypeパターン 練習課題6-1の回答例

結城浩氏著作「Java言語で学ぶデザインパターン入門」 Prototypeパターン 練習課題6-1の回答例です。 課題の概要 UnderLinePen、MessageBoxクラスのcreateClon …

オブジェクト指向がわかるようになるためにする3つのこと

オブジェクト指向がいまいちわからない人向けに、 オブジェクト指向でプログラミングできるようになるまでのステップを以下にまとめました。   Javaでプログラミングする Javaはオブジェクト …

Laravelのヘルパー関数とは?

Laravel includes a variety of global “helper” PHP functions. Many of these functions are …

CompsiteパターンでHTMLタグを実現するには?

Compositeパターンに応用できそうなものとして、 HTMLタグなんかいいかと思いコーディングしてみました。   クラス図   説明 Compositeパターンは再帰構造を実現 …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。