享元模式可以理解是一个对象的缓存,通过构建一个享元工厂对所有的对象进行管理。

代码如下:

  • Flyweight 享元的接口
public interface Flyweight {public void doAction();
}

  • FlyweightImpl 具体被共享的类实现
public class FlyweightImpl implements Flyweight{@Overridepublic void doAction() {System.out.println("doAction");}
}

  • FlyweightFactory 享元工厂
public class FlyweightFactory {private static Map<String, Flyweight> flyweights = new HashMap<String, Flyweight>();public static Flyweight getFlyweight(String key) {if (flyweights.get(key) == null) {flyweights.put(key, new FlyweightImpl());}return (Flyweight) flyweights.get(key);}public static int getSize() {return flyweights.size();}
}

  • APP 测试类
public class App {public static void main(String[] args) {FlyweightFactory factory = new FlyweightFactory();factory.getFlyweight("a").doAction();factory.getFlyweight("b").doAction();factory.getFlyweight("a").doAction();System.out.println(factory.getSize());}
}

  • 输出结果
doAction
doAction
doAction
2

转载于:https://www.cnblogs.com/Fredric-2013/p/4572937.html

设计模式(享元模式)相关推荐

  1. Python设计模式-享元模式

    Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...

  2. 10-Python与设计模式--享元模式

    10-Python与设计模式--享元模式 一.网上咖啡选购平台 假设有一个网上咖啡选购平台,客户可以在该平台上下订单订购咖啡,平台会根据用户位置进行线下配送.假设其咖啡对象构造如下: class Co ...

  3. 设计模式--享元模式实现C++

    /********************************* *设计模式--享元模式实现 *C++语言 *Author:WangYong *Blog:http://www.cnblogs.co ...

  4. 【设计模式】Java设计模式 - 享元模式

    [设计模式]Java设计模式 - 享元模式

  5. Unity设计模式——享元模式(附代码)

    Unity设计模式--享元模式(附源码) 享元Flyweight模式是什么 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的 ...

  6. 第二十二章 Caché 设计模式 享元模式

    文章目录 第二十二章 Caché 设计模式 享元模式 定义 优点 使用场景 结构图 描述 完整示例 实体类 抽象享元角色 实现享元角色 享元工厂 调用 思考 第二十二章 Caché 设计模式 享元模式 ...

  7. JavaScript设计模式-享元模式

    JavaScript设计模式-享元模式 概念 例子 内部状态与外部状态 享元模式的通用结构 例子 总结 github仓库地址:点击 [设计模式例子](https://github.com/fanhua ...

  8. JAVA 设计模式 享元模式

    用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构 图-享元模式结构图 Flyweight : 它是所有具体享元类的超类或接口,通过这个 ...

  9. java设计模式---享元模式

    Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己 对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自己的 ...

  10. PHP设计模式——享元模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的 ...

最新文章

  1. MyEclipse 9.x Professional/blue/spring/bling 下载与破解
  2. 【图神经网络】万物皆可Graph | 当推荐系统遇上图神经网络
  3. 学计算机申请书100字,加入学生会申请书100字范文
  4. 织梦cms提交熊掌号php,织梦cms熊掌号历史数据提交教程
  5. JAVA常用的环境变量配置
  6. 怎么样解决小交换机引起的路由环路故障?
  7. oracle修改字段长度sql_Oracle RAC修改参数文件位置
  8. 手动在viewpager的最后一页滑到第一页。
  9. 利用Chrome与迅雷下载斗鱼录播视频
  10. MTK6577+Android之按键(key)修改
  11. ubntu 五笔输入法 打不出词组
  12. Destroying assets is not permitted to avoid data loss.
  13. transition transform属性造成文字抖动及模糊的解决方法
  14. 如何查看计算机的网络网址,怎么查看电脑IP地址_如何查看电脑IP地址?-192路由网...
  15. AMD锐龙7 7745HX和i9-12900HX选哪个 r77745HX和i912900HX对比
  16. Android 9 按音量键音量调节流程
  17. 实习期运维工程师一些日常问题的汇总
  18. 论文阅读:2021.11.23~2021.12.1
  19. java war启动慢_解决springboot war包在tomcat部署时启动慢的问题
  20. GJM :C++ 资源收集小结

热门文章

  1. 思科——单臂路由与DHCP的结合
  2. day15-JavaScript字符串操作以及跑马灯示例
  3. Win32和MFC项目如何输出调试信息到VS的调试窗口
  4. 数据库查询构建控件集Active Query Builder
  5. linux nfs搭建
  6. excel去掉超链接
  7. 教你用Python表达母亲节的祝福
  8. 微信分享,二次分享(移动web端)
  9. Linux下利用backtrace追踪函数调用堆栈以及定位段错误【转】
  10. Vuebnb:一个用vue.js和Laravel构建的全栈应用