浅谈模式 - 享元模式

目的是共享内存中的某些对象资源

比如棋类游戏,每个棋子可以作为共享资源

public class Chess {

    private int id;
    private String text;
    private Color color;

    public Chess(int id, String text, Color color) {
        this.id = id;
        this.text = text;
        this.color = color;
    }

    public static enum Color {
        RED, BLACK;
    }
}

public class ChessFactory {

    private static final Map PIECES = new HashMap<>();

    static {
        PIECES.put(1, new Chess(1, "将", Chess.Color.BLACK));
        PIECES.put(2, new Chess(2, "将", Chess.Color.RED));
    }

    public static Chess get(int id) {
        return PIECES.get(id);
    }
}

我觉得这个模式用的不多,但某些场景非用不可。其实如果让某个程序员设计棋牌类游戏,就算他不知道有享元模式的存在,也会考虑把棋子这类可复用对象缓存起来。即使在最初没有这么设计,在压力测试或者生产内存持续暴涨的情况下,也会往这个方向优化。

查看全部 浅谈模式 - 汇总篇

你可能感兴趣的:(浅谈模式 - 享元模式)