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

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


関連記事

【Java入門】起動パラメータを付けて起動してみよう!

概要 Javaプログラムを起動する際に、何らかのパラメータ(値)を付けて起動することができます。 今はこのメリットがわからないと思いますが、そういうことができるんだなというレベルで理解しておいて頂けれ …

【SpringBoot入門】#8~ 検索機能の実装

概要 ・検索フォームから条件を指定して検索すると、条件に一致する結果が一覧画面に表示される。 ・検索条件は複合的に指定できることとする。 ・検索結果は適切にフォーマットされることとする。  (日付はy …

VBAが書けるまでにどのくらいかかったか?

これからVBAを学ぼうとしている人向けに参考情報として書きます。 前提 前提として、私の経歴を少し書いておきます。 ・PHPでのWeb開発1年未満 ・Javaの簡易なアプリは作れる ・SQLも理解して …

【SpringBoot入門】#4~ headerの作成と埋め込み

概要 全ての画面で使用するヘッダーを作成します。 そして、Index画面に埋め込むところまでを行います。 共通ヘッダーの作成

・&lt …

【TemplateMethodパターン】売上レポートをテキストとHTML形式で出力分けする事例

概要 デザインパターンのTemplateMethodパターンの事例です。 デザインパターンは増補改訂版 Java言語で学ぶデザインパターン入門で学ぶことができますし、Qiitaでも取り上げられています …

記事を探す

SpringFramworkの良書

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

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