定义
享元模式定义:
运用共享的技术有效地支持大量细粒度的对象。
内部状态和外部状态:
在享元对象内部,不会随环境改变而改变的状态称为内部状态, 否则是外部状态, 在调用享元对象时,把外部状态传给它
比如:
在开发棋类游戏时,如果每一个棋子都代表一个对象,那实例数会很多,仔细分析会发现,围棋和五子棋只有黑白两色,各个棋子的差别是位置的不同,
把颜色放在一个类中,这是内部状态,把坐标放在另一个类中,这是外部状态,从n多类变为了两个类,大大减少了实例数
模式结构
代码实现
场景: 博客园是一个大型的网站,每个人的博客是一个小型的网站,根据用户的id,展示的内容不一样, 因此数据和模板不同,但代码核心和数据库是共享的
代码: 点击下载
特点和使用场景
优点: 避免大量相似类的开销
使用场景: 程序中使用了大量的对象,造成了很大的存储开销,导致运行时资源和性能受到影响