享元模式
来源:互联网 发布:sodu小说源码 编辑:程序博客网 时间:2024/06/06 16:55
定义:使用共享对象可以有效的支持大量的细粒度的对象
FlyWeight抽象享元类:通常是一个接口或抽象类,声明公共方法,这些方法可以向外界提供对象的内部状态,设置外部状态。
UnsharedConcreteFlyWeight非共享享元类:不能被共享的子类可以设计为非共享享元类。
ConcreteFlyWeight具体享元类:为内部状态提供成员变量进行存储。
FlyWeightFactory享元工厂类:创建并管理享元对象,享元池一般设计为键值对。
//抽象享元类abstract class Flyweight { private String intrinsic; protected final String Extrinsic; public Flyweight(String Extrinsic){ this.Extrinsic = Extrinsic; } public abstract void operate(); public String getIntrinsic(){ return intrinsic; } public void setIntrinsic(String intrinsic){ this.intrinsic = intrinsic; }}//具体享元类class ConcreteFlyweight1 extends Flyweight{ public ConcreteFlyweight1(String Extrinsic) { super(Extrinsic); } @Override public void operate() { }}//享元工厂class FlyweightFactory { //对象池 private static HashMap<String,Flyweight> pool = new HashMap<>(); public static Flyweight getFlyweight(String Extrinsic){ Flyweight flyweight = null; if(pool.containsKey(Extrinsic)) flyweight = pool.get(Extrinsic); else { flyweight = new ConcreteFlyweight1(Extrinsic); pool.put(Extrinsic, flyweight); } return flyweight; }}
优缺点:
减少对象的创建,减少内存占用
增加系统复杂度
使用场景
系统中存在大量相似对象
缓冲对象池
注意事项
多线程问题
阅读全文
0 0
- 深入浅出享元模式
- 享元模式
- 享元(FlyWeight)模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式Flyweight
- 享元模式
- 享元模式
- 享元模式
- FlyWeight 享元模式
- 享元模式(Flyweight)
- 享元模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式 ---flyweight
- java模拟ssh执行shell命令
- 关于javax.servlet.jsp.JspException:java.net.MalformedURLException异常问题
- 设计模式(4)--AbstractFactory(抽象工厂模式)--创建型
- SpringBoot之Scheduling(P)
- Google Java编程风格指南
- 享元模式
- Python百度采集教程一
- Day10-35.A compendium of operators
- Centos6.5上安装python3.4.3+django1.10.3+sqlite3
- Hi3518EV200学习记录之运行mpp/sample/sample_venc(ov9712)
- java集合类图
- ajaxFileUpload进行文件上传时,总是进入error
- C++中的case标签
- URLDecoder: Illegal hex characters in escape (%) pattern