今回は Facade パターン(一覧)。
Facade パターンの登場人物
- @Facade → 型
- @Client → 型
- facadeType : Class<?>
アノテーション定義
上記の定義の具体的な Java コード。
public final class FacadePattern { private FacadePattern(){} @Target(ElementType.TYPE) public static @interface Facade{} /** GoF 本には定義されていません。 */ @Target(ElementType.TYPE) public static @interface Client{ Class<?> facadeType() default Void.class; } }
サンプルコード in 『Java 言語で学ぶデザインパターン入門』
PageMaker.java
@Facade 役のクラス。
package sample.gof.structural.facade.pagemaker; import org.waman.tools.design.gof.structural.FacadePattern; @FacadePattern.Facade public class PageMaker { private PageMaker() {} public static void makeWelcomePage(String mailaddr, String filename) {...} }
Main.java
@Client 役のクラス。
import sample.gof.structural.facade.pagemaker.PageMaker; import org.waman.tools.design.gof.structural.FacadePattern; @FacadePattern.Client(facadeType = PageMaker.class) public class Main { public static void main(String[] args) { PageMaker.makeWelcomePage("hyuki@hyuki.com", "welcome.html"); } }