设计模式(10)享元模式
2019-01-26 11:22
63 查看
定义:运用共享技术有效地支持大量细粒度的对象。
场景:
现在要缓存一些数据,比如说权限,根据权限的ID作为key,权限数据自己本身是value,但是我们不需要使用太复杂的ehcache框架之类的去使用,特别特别的简单的,我们就想基于自己的Map去实现一套东西。
public class FlyweightPatternDemo { public static void main(String[] args) { Flyweight flyweight1 = FlyweightFactory.get("对象1"); flyweight1.execute(); Flyweight flyweight2 = FlyweightFactory.get("对象1"); flyweight2.execute(); System.out.println(flyweight1 == flyweight2); } public interface Flyweight { void execute(); String getName(); void setName(String name); } public static class ConcreteFlyweight implements Flyweight { private String name; @Override public String getName() { return name; } @Override public void setName(String name) { this.name = name; } public ConcreteFlyweight(String name) { super(); this.name = name; } @Override public void execute() { System.out.println(name + "执行功能逻辑"); } } public static class FlyweightFactory { private static Map<String, Flyweight> cachePool = new HashMap<>(); public static Flyweight get(String name) { Flyweight flyweight = cachePool.get(name); if(flyweight == null) { flyweight = new ConcreteFlyweight(name); cachePool.put(name, flyweight); } return flyweight; } } }
应用场景:
维护固定数量的对象实例,不同的对象实例,只有一个,然后保存在内部的一个map中。
常见使用场景,就是jvm内缓存实现,如果我们不想引入ehcache之类缓存框架,就想简单一点,通过自己实现的一个map来缓存对应的一些数据,比如说每个权限的数据,或者每个员工的数据,在内存里自己维护一个缓存工厂,就是基于享元模式的思想来实现的。
相关文章推荐
- 设计模式 --> (10)享元模式
- JAVA基础10 设计模式:结构型模式(适配器 代理模式 桥接模式 享元模式 组合模式 装饰器模式)
- 10.享元模式(设计模式笔记)
- 设计模式学习总结(10) 享元模式
- 设计模式(10)之享元模式
- Java设计模式之享元模式
- 设计模式go语言实现----享元模式flyweight
- [设计模式]享元模式(Flyweight)
- 设计模式——享元模式
- 设计模式10—Adapter设计模式
- 23种设计模式-10-命令模式
- 设计模式之享元模式
- JAVA设计模式--享元模式
- 设计模式-享元模式
- java-设计模式(结构型)-【享元模式】
- Java设计模式之共享模式/享元模式(Flyweight模式)介绍
- 设计模式(三)结构模式和行为模式(代理模式、享元模式)(观察者模式、命令模式)
- 设计模式-10-装饰者
- 设计模式(十二)享元模式
- Java设计模式—享元模式