享元模式(Flyweight Pattern)主要用于减少创建的对象数量,并减少内存占用并提高性能。 这种类型的设计模式属于结构模式,因为该模式提供了减少对象计数的方法,从而改善应用的对象结构。

享元模式(Flyweight Pattern)尝试通过存储已经存在的类似对象以重用,并在找不到匹配的对象时创建新对象。我们将通过绘制不同位置的20个圆圈来演示这种模式,但是这里只创建5个对象。只有5种颜色可用,因此color属性用于检查已经存在的Circle对象。

实现实例

在这个实例中,将创建一个Shape接口和一个实现Shape接口的具体类Circle。在下一步中将定义一个工厂类ShapeFactory

ShapeFactory有一个HashMapCircle作为Circle对象的颜色。每当一个请求向ShapeFactory创建一个指定颜色的圆形时,它会检查HashMap中的圆形对象,如果找到对象则返回这个对象,否则就会创建一个新对象然后存储在hashmap中以供将来使用,并返回这个新创建的对象给客户端。

FlyWeightPatternDemo这是一个演示类,将使用ShapeFactory来获取一个Shape对象。它将信息(红色/绿色/蓝色/黑色/白色)传递给ShapeFactory以获得所需颜色的圆形。

享元模式的实现实例结构如下图中所示 -

最新文章

  1. CentOS7—HAProxy安装与配置
  2. SQL中EXISTS的用法
  3. Redis 配置文件
  4. POJ 1127 Jack Straws(计算几何)
  5. Spring第十篇—举例实现AOP
  6. 导入Excel的时候使用TransactionScope事务控制来进行数据
  7. Ubuntu 下无法Tab键自动补全功能解决办法
  8. Entity Framework 6.1-Database First介绍
  9. UVALive-4287 Proving Equivalences 有向图的强连通分量+缩点
  10. Eclipse选择rt.jar的源代码的位置
  11. SpringMVC静态文件(图片)访问+js访问 简单小例子
  12. Laravel使用Seeder自动填充数据
  13. 009一对一 主键关联映射_单向(one-to-one)
  14. java中new关键字和newInstance()方法的区别
  15. maven使用中的问题
  16. 【LeetCode刷题系列 - 003题】Longest Substring Without Repeating Characters
  17. 大众点评selfxss结合两个csrf变废为宝(已修复,故公开,不涉及真实参数)
  18. datetime字符串中含T
  19. 设计模式【PHP案例】
  20. CRC32 of Ether FCS with STM32

热门文章

  1. Problems occurred when invoking code from plug-in: "org.eclipse.jface".
  2. JS中的匿名函数、回调函数、匿名回调函数
  3. lambda 分组后的count
  4. C# 对象转JSON字符串
  5. JavaScript中正则使用
  6. ed-tue-robotics
  7. surpace pro 检测维修记录
  8. <select multiple="multiple"> 数据回显
  9. bzoj1495 [NOI2006]网络收费 复杂度分析+树上背包
  10. Java类加载顺序练习题