设计模式之享元模式
2018-02-25 13:34
155 查看
享元模式是本质上是实现对象的复用的设计模式,内容相同的对象有一个就可以了,当多个场景可以复用同一个对象,即享元;
Flyweight类:public class Flyweight {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Flyweight(String name) {
super();
this.name = name;
}
}
Factory类:public class FlyweightFactory {
Map<String,Object> flyweights = new HashMap<String,Object>();
public Flyweight getFlyweight(String name){
Flyweight flyweight = (Flyweight)flyweights.get(name);
if (null == flyweight) {
flyweight = new Flyweight(name);
System.out.println("创建对象:"+name);
flyweights.put(name, flyweight);
}
return flyweight;
}
}Client类:public class Client {
public static void main(String[] args) {
FlyweightFactory factory = new FlyweightFactory();
Flyweight flyweight1 = factory.getFlyweight("张三");
Flyweight flyweight2 = factory.getFlyweight("张三");
Flyweight flyweight3 = factory.getFlyweight("张三");
}
}执行结果为:创建对象:张三
可以看到,对象只创建了一次,实现了对象的复用;在实际业务中,很多对象都会在redis等缓存中存一份,如果没有,再创建;
Flyweight类:public class Flyweight {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Flyweight(String name) {
super();
this.name = name;
}
}
Factory类:public class FlyweightFactory {
Map<String,Object> flyweights = new HashMap<String,Object>();
public Flyweight getFlyweight(String name){
Flyweight flyweight = (Flyweight)flyweights.get(name);
if (null == flyweight) {
flyweight = new Flyweight(name);
System.out.println("创建对象:"+name);
flyweights.put(name, flyweight);
}
return flyweight;
}
}Client类:public class Client {
public static void main(String[] args) {
FlyweightFactory factory = new FlyweightFactory();
Flyweight flyweight1 = factory.getFlyweight("张三");
Flyweight flyweight2 = factory.getFlyweight("张三");
Flyweight flyweight3 = factory.getFlyweight("张三");
}
}执行结果为:创建对象:张三
可以看到,对象只创建了一次,实现了对象的复用;在实际业务中,很多对象都会在redis等缓存中存一份,如果没有,再创建;
相关文章推荐
- 设计模式 享元模式(Flyweight)
- java-设计模式(结构型)-【享元模式】
- iOS 设计模式 - 享元模式
- [设计模式]享元模式
- 设计模式学习笔记(二十:享元模式)
- JAVA 设计模式 享元模式
- JAVA设计模式之享元模式Flyweight
- Net设计模式实例之享元模式( Flyweight Pattern)
- Java经典设计模式-结构型模式-享元模式(Flyweight)
- 深入理解JavaScript系列(37):设计模式之享元模式
- 设计模式-享元模式
- c++23种设计模式之享元模式
- 设计模式之享元模式(Flyweight)摘录
- Java设计模式二十二:享元模式(Flyweight)
- 设计模式 (十三)享元模式(Flyweight)
- 设计模式之享元模式
- 如何让孩子爱上设计模式 ——12.享元模式(Flyweight Pattern)
- 设计模式之第12章-享元模式(Java实现)
- php设计模式 FlyWeight (享元模式)
- 【设计模式】——享元模式