享元模式的作用是共享元素,这样就不用调用相同元素时候,都去实例化一个对象,节省内存提高效率。
public interface FlyWeight {
public void operation();
}
public class ConcreteFlyWeight implements FlyWeight {
String flyWeight ;
public ConcreteFlyWeight(String flyWeight) {
this .flyWeight = flyWeight;
}
public void operation() {
System. out .println("the flyWeight is :" + flyWeight + " the real obj is :"+ this);
}
}
public class FlyWeightFactory {
public Map<String, FlyWeight> map = new HashMap<String, FlyWeight>();
public FlyWeight getFlyWeight(String name) {
if (map .containsKey(name)) {
return map .get(name);
} else {
FlyWeight flyWeight = new ConcreteFlyWeight(name);
map.put(name, flyWeight);
return flyWeight;
}
}
}
public class FlyWeightClient {
public static void main(String[] args) {
FlyWeightFactory factory = new FlyWeightFactory();
FlyWeight fly1 = factory.getFlyWeight( "fly" );
FlyWeight fly2 = factory.getFlyWeight( "weight" );
FlyWeight fly3 = factory.getFlyWeight( "fly" );
FlyWeight fly4 = factory.getFlyWeight( "weight" );
FlyWeight fly5 = factory.getFlyWeight( "weight" );;
fly1.operation();
fly2.operation();
fly3.operation();
fly4.operation();
fly5.operation();
}
}