享元模式定义:运用共享技术有效地支持大量细粒度的对象。
需要减少创建对象的数量,以减少内存占用和提高性能时,可以考虑使用享元模式。
以下代码演示享元模式简单的实际运用:
定义一个抽象类People:
package com.ldl.cn.FlyweightModel;
public abstract class People {
public abstract void routine();
}
定义类Programmer继承People:
package com.ldl.cn.FlyweightModel;
public class Programmer extends People{
private String workContent;
public Programmer(String workContent) {
super();
this.workContent = workContent;
}
@Override
public void routine() {
System.out.println("程序员"+workContent);
}
}
定义工厂类FlyweightFactory:
package com.ldl.cn.FlyweightModel;
import java.util.HashMap;
import java.util.Map;
public class FlyweightFactory {
public static Map<String, People> pMap = new HashMap<String,People>();
public static People getPeople(String pKey){
People people = pMap.get(pKey);
if (people == null) {
people = new Programmer(pKey);
pMap.put(pKey, people);
}
return people;
}
public static int getJobSize(){
return pMap.size();
}
}
编写测试类:
package com.ldl.cn.FlyweightModel;
public class TestFlyweightPattern {
public static void main(String[] args) {
People people = FlyweightFactory.getPeople("看需求");
people.routine();
People people2 = FlyweightFactory.getPeople("写代码");
people2.routine();
People people3 = FlyweightFactory.getPeople("做测试");
people3.routine();
System.out.println("程序员的任务数量:"+FlyweightFactory.getJobSize());
}
}
运行结果:
程序员看需求
程序员写代码
程序员做测试
程序员的任务数量:3