JAVA 设计模式 享元模式
用途
Flyweight : 它是所有具体享元类的超类或接口,通过这个接口,Flyweight 可以接受并作用于外部状态。
public abstract void Operation(int extrinsicstates);
}
ConcreteFlyweight : 是继承 Flyweight 超类或实现 Flyweight 接口,并为内部状态增加存储空间。
@Override
public void Operation(int extrinsicstates) {
System.out.println("共享的Flyweight : " + extrinsicstates);
}
}
UnsharedConcreteFlyweight : 指那些不需要共享的 Flyweight 子类,因为 Flyweight 接口共享成为可能,但它并不强制共享。
@Override
public void Operation(int extrinsicstates) {
System.out.println("不共享的Flyweight : " + extrinsicstates);
}
}
private Hashtable<String, Flyweight> flyweights = new Hashtable<String, Flyweight>();
public FlywightFactory() {
flyweights.put("X", new ConcreteFlyweight());
flyweights.put("Y", new ConcreteFlyweight());
flyweights.put("Z", new ConcreteFlyweight());
}
public Flyweight GetFlyweight(String key) {
return ((Flyweight)flyweights.get(key));
}
}
测试代码
public static void main(String[] args) {
int extrinsicstates = 1;
FlywightFactory factory = new FlywightFactory();
Flyweight fx = factory.GetFlyweight("X");
fx.Operation(extrinsicstates);
Flyweight fy = factory.GetFlyweight("Y");
fy.Operation(++extrinsicstates);
Flyweight fz = factory.GetFlyweight("Z");
fz.Operation(++extrinsicstates);
Flyweight uf = new UnsharedConcreteFlyweight();
uf.Operation(++extrinsicstates);
}
}
运行结果
共享的Flyweight : 2
共享的Flyweight : 3
不共享的Flyweight : 4
本文属于 JAVA设计模式系列 。
《大话设计模式》
《HeadFirst设计模式》
JAVA 设计模式 享元模式相关推荐
- 【设计模式】Java设计模式 - 享元模式
[设计模式]Java设计模式 - 享元模式
- java设计模式---享元模式
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己 对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自己的 ...
- JAVA设计模式--享元模式
目录 一.什么是享元模式 二.享元模式在Java中的典型应用 三.享元模式的结构 单纯享元模式 复合享元模式 四.享元模式应用举例 五.享元模式的适用性 六.享元模式的特点 七.总结 一.什么是享元模 ...
- Java设计模式----------享元模式
1.介绍 享元模式通过尽可能的复用已经存在的对象,从而尽量少的创建新对象,以节约系统的内存和提供系统性能.在享元模式中,对象的属性分为两种,内部状态和外部状态.内部状态指的是对象中不随外部变化的属性, ...
- Python设计模式-享元模式
Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...
- 10-Python与设计模式--享元模式
10-Python与设计模式--享元模式 一.网上咖啡选购平台 假设有一个网上咖啡选购平台,客户可以在该平台上下订单订购咖啡,平台会根据用户位置进行线下配送.假设其咖啡对象构造如下: class Co ...
- 设计模式--享元模式实现C++
/********************************* *设计模式--享元模式实现 *C++语言 *Author:WangYong *Blog:http://www.cnblogs.co ...
- Unity设计模式——享元模式(附代码)
Unity设计模式--享元模式(附源码) 享元Flyweight模式是什么 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的 ...
- 第二十二章 Caché 设计模式 享元模式
文章目录 第二十二章 Caché 设计模式 享元模式 定义 优点 使用场景 结构图 描述 完整示例 实体类 抽象享元角色 实现享元角色 享元工厂 调用 思考 第二十二章 Caché 设计模式 享元模式 ...
最新文章
- php 调试常用函数,PHP几个常用的调试输出函数
- 关于git的ssh-key:解决本地多个ssh-key的问题
- .frm_.myd_myi转换为.sql导入mysql数据库_把.frm,.myd,myi转换为.sql导入数据库
- “约见”面试官系列之常见面试题之第六十六篇之事件委托的原理和实现(建议收藏)
- 【CUDA开发】 Check failed: error == cudaSuccess (8 vs. 0) invalid device function
- 解决ubuntu18.04中python兼容以及pip兼容问题
- python教学反思_Python语言教学反思
- 古罗马花园石头雕像喷泉原理
- 当我谈跑步时我谈些什么
- 安装目录里无法找到计算机,安装软件弹出系统找不到指定的路径提示解决方法...
- 使用beautifulSoup
- Oracle OCP学习——Catalog的配置与使用
- Android解耦库EventBus的使用和源码分析
- 基于jQuery的软键盘
- 附件 计算机 丢失,Win10系统开始菜单中没有附件解决方法
- 如何防止SQL注入攻击?
- Next.js了解篇|一文带你梳理清楚 Next.js 的功能
- Python数据分析——上海市二手房价格分析
- 计算机视觉教程核心版(八)卷积神经网络各种层
- k8s.5-使用RKE构建企业生产级Kubernetes集群
热门文章
- 吴恩达机器学习笔记 —— 5 多变量线性回归
- 领英2017报告:机器学习、大数据工程师成为最热门的新兴职业
- 没有安装python如何使用anaconda运行python命令行
- 深入探索边缘计算:物联网与5G时代的技术趋势
- 揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活【附下载】| 智东西内参...
- 人类正在进入超级智能时代,论一种新超级智能的崛起
- AR/VR逐渐回暖 联合安防步入未来
- 报告 | 2019年全球数字化转型现状研究报告
- 深度观察|工业物联网的应用场景和市场潜力
- 清华大学:智能驾驶背景下转向系统发展趋势