デザインパターン 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


関連記事

Redmineでリンクにできない場合にチェックすること

リンクにできない場合のチェック項目 前後に文字列がくっついている。 前後に全角スペースがある。 リンクの#が全角になっている。   リンクにするには? 以下のルールで記述すればリンクにできま …

正規表現で複数の箇所を入れ替える方法

複数の特定の箇所を入れ替えるテクニックです。 確認環境 Sakuraエディタ 置換方法 ここでは例として、:区切りの前後の文字列を入れ替えてみます。 置換前データ メニュー:AAA メニュー:BBB …

映画のレイティング判定をStateパターンで実装する

ユーザが見ることができる作品を、映画のレイティングシステムに従って選別できるように実装します。 映画のレイティングシステムとは、年齢制限する規制のことです。 G:全年齢 PG12:12歳以上 R15+ …

no image

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

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

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

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

SpringFramworkの良書

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

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