设计模式之享元模式
2016-12-06 17:05
357 查看
享元模式,即共享元素对象,他的目的就是为了避免大量的创建对象,复用已经创建好的对象,从而节省内存的的开销,提升了系统的性能。他的核心思路是的将一个对象存储在map集合里面,当调用这个方法时候从集合中获取,如果没有就创建再返回,如果有直接复用此对象。例如线程池、数据库连接池、字符串等此设计模式比较简单,下面直接贴代码。
1、创建享元接口
id:1-------color:red
id:2-------color:blue
id:3-------color:yello
1、创建享元接口
public interface Flyweight { void setColor(int id); }2、具体的享元实现对象,内部需要封装Flyweight的内部状态,必须是共享的。
public class ConcreteChess implements Flyweight { private String color; public ConcreteChess(String color) { this.color =color; } @Override public void setColor(int id) { System.out.println("id:"+id+"-------"+"color:"+color); } }3、享元工厂类,核心类
public class FlyWeightFactory { //创建享元池,保存对象 private static HashMap<String,Flyweight> map = new HashMap<>(); public Flyweight getFlyweight(String color){ if (map.get(color)!=null) { Flyweight flyweight = map.get(color); return flyweight; } else { ConcreteChess flyweight = new ConcreteChess(color); map.put(color,flyweight); return flyweight; } } }4、测试类
public class MyClass { public static void main(String[] args){ FlyWeightFactory flyWeightFactory = new FlyWeightFactory(); Flyweight red = flyWeightFactory.getFlyweight("red"); red.setColor(1); Flyweight blue = flyWeightFactory.getFlyweight("blue"); blue.setColor(2); Flyweight yello = flyWeightFactory.getFlyweight("yello"); yello.setColor(3); } }运行结果如下:
id:1-------color:red
id:2-------color:blue
id:3-------color:yello
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Debian 7.x 安装Oracle JAVA
- springmvc实现url路由功能
- spring boot 配置 druid/** * 配置druid * Created by adam on 4/11/16. */ @Configuration public class D
- api接口rsa加密
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解