设计模式之结构型-享元模式(11)
来源:互联网 发布:程序员的梦工厂 编辑:程序博客网 时间:2024/06/03 14:32
接着学习享元模式
享元模式定义:运用共享技术有效的支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。
下面是享元模式的类图
其中:
Flyweight:抽象享元角色,享元对象的基类或者接口。
FlyweightFactory:享元工厂,负责管理享元对象池,创建享元角色。
ConcreteFlyweight:具体享元角色,实现Flyweight
下面我们举一个手机的例子来代码模拟一下享元模式
//单个的手机public class Phone { String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
//享元手机工厂,单例模式public class PhoneFactory { private Map<String,Phone> pool; private volatile static PhoneFactory instance; private PhoneFactory() { pool =new HashMap<>(); } public static PhoneFactory getInstance(){ if (instance!=null){ synchronized (PhoneFactory.class){ if (instance!=null){ instance=new PhoneFactory(); } } } return instance; } public void addPhone(Phone phone){ if (phone!=null&& pool.containsKey(phone.getName())){ pool.put(phone.getName(),phone); } } public Phone getPhone(String phoneName){ return pool.get(phoneName); }}
//测试类public class Test { public static void main(String[] args) { Phone phone1=new Phone(); Phone phone2=new Phone(); Phone phone3=new Phone(); phone1.setName("小米5"); phone2.setName("小米6"); phone3.setName("小米6"); PhoneFactory instance = PhoneFactory.getInstance(); instance.addPhone(phone1); instance.addPhone(phone2); instance.addPhone(phone3); }}
享元模式大量降低内存消耗,例如线程池的使用,数据库连接池的使用,提高性能,但是增加了系统的复杂程度,
阅读全文
1 0
- 设计模式之结构型-享元模式(11)
- java设计模式(结构型)之享元模式
- 结构型:设计模式之享元模式(八)
- 设计模式--结构型模式之六-Flyweight享元
- 设计模式(结构型)之享元模式(Flyweight Pattern)
- 设计模式-结构型之享元模式
- Java设计模式概述之结构型模式(享元模式)
- Java设计模式之结构型模式-享元模式(Flyweight)
- 设计模式-结构型模式-享元
- 设计模式--结构型--享元模式
- 结构型设计模式-享元模式
- 结构型设计模式-享元模式
- 设计模式(11)-结构型-享元模式(Flyweight)
- 设计模式(11)--Flyweight(享元模式)--结构型
- 设计模式笔记(12)---享元模式(结构型)
- 设计模式--享元模式FlyWeight(结构型)
- 结构型设计模式---享元模式(Flyweight)
- 设计模式-结构型-享元模式(Flyweight)
- hdu 4424 并查集+分治/贪心 有些最大生成树的感觉
- java-并发集合-并发hash表 ConcurrentHashMap 演示
- 利用StringEscapeUtils对字符串进行各种转义与反转义(Java)
- 50 个 Java 开发常见错误及规避技巧 (Part 2)
- android进程间通信AIDL详解
- 设计模式之结构型-享元模式(11)
- xpath语法(一)
- Mac OS 配置Maven
- Qualcomm平台camera调试移植入门
- [Leetcode] 238. Product of Array Except Self 解题报告
- objective-c自动布局纯代码写法
- static变量的初始化和赋值的区别
- shell脚本运行的原理(source命令等)
- 新垃圾回收机制说明