@634

Flyweight パターン

Advertisement

オブジェクトを再利用する

複数のクライアントから使用されるオブジェクトをプールしておき、再利用する。よく使われるクラスに適用すると、オブジェクト生成にかかる時間を節約することができる。

サンプルコード

クラス Figure
public class Figure {
    private String name = null;

    public Figure(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }

    public void draw(){
        System.out.println(name);
    }
}

クラス FigureFactory
import java.util.HashMap;

public class FigureFactory {
    private FigureFactory(){}

    private static HashMap map = new HashMap();

    public static Figure get(String name){
        Figure figure = null;
        figure = (Figure)map.get(name);
        if(figure == null){
            System.out.println("オブジェクト" + name + "生成");
            figure = new Figure(name);
            map.put(name, figure);
        }
        return figure;
    }
}

クラス Main
public class Main {
    public static void main(String[] args) {
        Figure triangleA = FigureFactory.get("Triangle");
        Figure triangleB = FigureFactory.get("Triangle");
        Figure squareA = FigureFactory.get("Square");
        Figure squareB = FigureFactory.get("Square");
        Figure squareC = FigureFactory.get("Square");

        triangleA.draw();
        triangleB.draw();
        squareA.draw();
        squareB.draw();
        squareC.draw();
    }
}

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール