设计模式(13)--享元模式
来源:互联网 发布:xp 1433端口怎么打开 编辑:程序博客网 时间:2024/05/29 16:40
什么是享元模式?
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,享元模式的主要核心就是减少对象的数量,在使用对象的时候尽量使用内存中已经存在的对象。
什么时候使用享元模式?
在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。
如何实现
享元模式的主要实现就是管理内存中已经存在的对象,把这些对象用集合或者map收集起来,再有创建对象需求的时候先检查内存中是否存在,存在则直接使用。
public interface Shape { void draw();}
public class Circle implements Shape{ private String color; private int x; private int y; private int radius; public Circle(String color){ this.color = color; } public void draw() { System.out.println("Circle: Draw() [Color : " + color +", x : " + x +", y :" + y +", radius :" + radius); }}
实现享元:
public class ShapeFactory { private static final HashMap<String, Shape> circleMap = new HashMap<String, Shape>(); public static Shape getCircle(String color) { Circle circle = (Circle)circleMap.get(color); if(circle == null) { circle = new Circle(color); circleMap.put(color, circle); System.out.println("Creating circle of color : " + color); } return circle; }}
测试类很简单,读者自己实现吧,如果Circle 对象中存在很多属性,需要全部相等才认为相等的话,key可以使用对象的hash值。
阅读全文
0 0
- 设计模式(13)--享元模式
- 设计模式(13)-享元模式(Flyweight)
- <设计模式13>享元模式
- 设计模式之13--享元模式
- 设计模式(享元模式)
- c++设计模式(享元模式)
- 设计模式:享元模式(Flyweight)
- 设计模式:享元模式(Flyweight)
- 设计模式(14)-享元模式
- 设计模式:享元模式(Flyweight)
- 设计模式-享元模式(Flyweight)
- 设计模式(11)------享元模式
- 设计模式(十二)享元模式
- 设计模式(十二)享元模式
- 设计模式(11)-享元模式
- 设计模式(11)--享元模式
- 设计模式-共享模式/享元模式(Flyweight模式)
- 13、C语言和设计模式(享元模式)
- 如何将oracle date类型的字段,显示为格式 yyyy-mm-dd hh:mm:ss
- DoTween
- 动态规划(5)
- Extjs6.2 打包配置文件(app.json)
- linux环境下源码安装nginx,并搭建PHP 环境
- 设计模式(13)--享元模式
- UITableView 有时不能使用缓存池的情况
- Java, String类型转Date类型的方法
- springMVC常用注解
- JAVA实战:一个桌球小游戏
- 澳大利亚游学指南大全,有哪些安排一看便知
- SpringMVC常用获取传递参数的方法
- 动态规划(6)
- Redis遍历所有key的两个命令 -- KEYS 和 SCAN