liguofeng29’s blog

個人勉強用ブログだっす。

デザインパターン - Facade

【facadeパターンとは】

窓口を用意して利用者には

内部の色んなクラスの相互関係が分からなくても利用できる。

 

【facadeパターンのクラス図】

facadeパターンのメリット】

利用者は窓口(facade)と通して複雑な処理を簡単に利用できる。

 

【サンプル】

Librarian.java
package facade;
 
import java.util.HashMap;
import java.util.Map;
// 図書館管理者
public class Librarian {
 
public String searchBook(String bookName) {
String location = search(bookName);
 
if (location != null) {
return bookName + "は" + location + "にあります。";
} else {
return bookName + "ないね";
}
 
}
 
private String search(String bookName) {
Map<String, String> bookList = new HashMap<String, String>();
 
bookList.put("book1", "1棚1列");
bookList.put("book2", "2棚2列");
bookList.put("book3", "3棚3列");
 
System.out.println("図書館管理人がとても難しい書籍検索システムを使って本を検索しました。");
 
// 本があるのか
return bookList.get(bookName);
}
}
 
 
 
 

Vistor.java
package facade;
 
/*
 * 顧客
 * 本は沢山あるし、管理員に聞こう。
 */
public class Vistor {
public static void main(String[] args) {
 
Librarian li = new Librarian();
 
System.out.println(li.searchBook("book1"));
System.out.println(li.searchBook("book2"));
System.out.println(li.searchBook("book4"));
}
}
 
 

実行結果
図書館管理人がとても難しい書籍検索システムを使って本を検索しました。
book1は1棚1列にあります。
図書館管理人がとても難しい書籍検索システムを使って本を検索しました。
book2は2棚2列にあります。
図書館管理人がとても難しい書籍検索システムを使って本を検索しました。
book4ないね