倭マン's BLOG

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

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

今回は Sigleton パターン一覧)。

Singleton パターンの登場人物

  • @Singleton → 型
    • @Instance → フィールド
    • @GetInstance → メソッド

アノテーション定義


上記の定義の具体的な Java コード。

package org.waman.tools.design.gof.creational;

import java.lang.annotation.*;

public final class SingletonPattern {
    
    private SingletonPattern(){}

    @Target(ElementType.TYPE)
    public static @interface Singleton {

        @Target(ElementType.FIELD)
        public static @interface Instance {}

        @Target(ElementType.METHOD)
        public static @interface GetInstance {}
    }
}

サンプルコード in 『Java 言語で学ぶデザインパターン入門』


Singleton.java

@Singleton 役のクラス。

import org.waman.tools.design.gof.creational.SingletonPattern;
import org.waman.tools.design.gof.creational.SingletonPattern.Singleton.GetInstance;
import org.waman.tools.design.gof.creational.SingletonPattern.Singleton.Instance;

@SingletonPattern.Singleton
public final class Singleton {
    
    @Instance
    private static Singleton INSTANCE = new Singleton();
    
    private Singleton() {                                 
        System.out.println("インスタンスを生成しました。");
    }
    
    @GetInstance
    public static Singleton getInstance() {
        return INSTANCE;
    }
}

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