您的位置:首页 > 编程语言 > Java开发

设计模式之享元模式

2016-12-06 17:05 357 查看
享元模式,即共享元素对象,他的目的就是为了避免大量的创建对象,复用已经创建好的对象,从而节省内存的的开销,提升了系统的性能。他的核心思路是的将一个对象存储在map集合里面,当调用这个方法时候从集合中获取,如果没有就创建再返回,如果有直接复用此对象。例如线程池、数据库连接池、字符串等此设计模式比较简单,下面直接贴代码。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息