浅谈模式 - 享元模式

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

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

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<Integer, Chess> 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);
    }
}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值