设计模式笔记-享元模式

享元模式的作用是共享元素,这样就不用调用相同元素时候,都去实例化一个对象,节省内存提高效率。
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();
       }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值