倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

「GoF デザインパターン」アノテーション (10) : Facade パターン

今回は 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");
    }
}

増補改訂版Java言語で学ぶデザインパターン入門 オブジェクト指向における再利用のためのデザインパターン