【每日一记】设计模式——享元模式
来源:互联网 发布:wifi杀手软件下载 编辑:程序博客网 时间:2024/05/22 06:07
概述
- 定义:运用共享技术有效的支持大量细粒度的对象
- 试用场景:如果一个应用程序使用了大量的对象,而这些对象造成了很大的存储开销的时候就可以考虑使用享元模式
实现
享元模式要注意区分内部状态和外部状态
- 内部状态:不会随环境的改变而有所不同、可以共享
- 外部状态:随环境的改变而改变、不可以共享
public interface Flyweight { void operate();}class ConcreteFlyweight implements Flyweight { private String name; public ConcreteFlyweight(String name) { super(); this.name = name; } @Override public void operate() { System.out.println(name); }}class FlyweightFactory { private Map<String, Flyweight> flyweights = new HashMap<>(); public Flyweight getFlyweight(String name) { Flyweight f = flyweights.get(name); if (f == null) { f = new ConcreteFlyweight(name); flyweights.put(name, f); } return f; }}
// 客户端public class Client { public static void main(String[] args) throws Exception { FlyweightFactory factory = new FlyweightFactory(); factory.getFlyweight("1").operate(); factory.getFlyweight("2").operate(); factory.getFlyweight("1").operate(); factory.getFlyweight("3").operate(); }}
实际应用
java.lang.Integer
public static Integer valueOf(int i) { // 如果缓存中存在则直接返回缓存中的对象,否则新建一个 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i);}
0 0
- 【每日一记】设计模式——享元模式
- 每日设计模式——享元模式
- 【每日一记】设计模式——单例模式
- 【每日一记】设计模式——工厂模式
- 【每日一记】设计模式——建造者模式
- 【每日一记】设计模式——原型模式
- 【每日一记】设计模式——适配器模式
- 【每日一记】设计模式——装饰器模式
- 【每日一记】设计模式——代理模式
- 【每日一记】设计模式——外观模式
- 【每日一记】设计模式——桥接模式
- 【每日一记】设计模式——组合模式
- 【每日一记】设计模式——策略模式
- 【每日一记】设计模式——模板方法模式
- 【每日一记】设计模式——观察者模式
- 【每日一记】设计模式——迭代器模式
- 【每日一记】设计模式——责任链模式
- 【每日一记】设计模式——命令模式
- 机器学习入门(9)--Octave入门
- Eclipse——DOC源码导入
- 项目笔记:简单cookies携带信息
- Sorting Algorithm
- RNN的四种代表性扩展—Attention and Augmented Recurrent Neural Networks(一)
- 【每日一记】设计模式——享元模式
- Eclipse——插件
- 机器学习入门(10)--Octave进阶编程
- [课堂笔记]secureCRT终端仿真程序的使用和文件的上传下载以及chomd的使用
- Python go java该如何选择
- Eclipse——主题
- Ubuntu安装JDK
- 机器学习入门(11)--多特征量梯度下降算法
- POJ 3258 River Hopscotch 笔记