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

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

投稿日:2020年6月14日 更新日:

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言語で学ぶデザインパターン入門

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

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

執筆者:


comment

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

CAPTCHA


関連記事

no image

XSS対策の基本は入力値制限とサニタイジング(無害化)の2つ

XSS(クロスサイトスクリプティング)の基本的な対策は何をすればいいのかがぼんやりしている方向けの書いています。 対策方法はタイトルの通り、XSS(クロスサイトスクリプティング)対策の基本は入力値制限 …

【Java】オブジェクト指向の練習題材(成績オブジェクト)

前回記事、オブジェクト指向とは何なのかを簡単に説明してみるの練習題材です。 ここでは2つのオブジェクトを作成していきます。 成績オブジェクト:教科と点数などを保持 生徒オブジェクト:氏名と成績を保持 …

【Java】重複しないリストはSetを使う!(用途別 3種類)

概要 重複しないリストは、「Setに格納することで重複を除外してくれる」というのは多くの記事で紹介されています。 ここでは、Setに格納した後のデータの並び順も考慮したいという要件に対応するために、3 …

【Java】オブジェクト指向の練習題材(会員オブジェクト)

前回記事、オブジェクト指向とは何なのかを簡単に説明してみるの練習題材です。   仕様 以下の会員クラスを作成し、Mainクラスで表示する。 会員クラスには、「会員」という単位で持つことできる …

【Laravel】SQLの確認はenableQueryLogを使う

SQLのデバッグのために、SQLとバインドされた値を確認したいことがあります。 その時に使える方法として、よく提示されるのは以下の2つです。 1.enableQueryLogメソッドとgetQuery …

記事を探す

SpringFramworkの良書

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

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