java 设计模式学习笔记十一flyweight享元设计模式

flyweight享元设计模式
避免拥有相同内容的小类的开销,共享一个元类

 


示例代码如下:


/**
 * 抽象数据类型
 * 
 * @time 下午09:25:37
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public interface ExtrinsicState {

}






/**
 * flyweight接口
 * 
 * @time 下午09:24:12
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public interface FlyWeight {
public void operation(ExtrinsicState state);
}








/**
 * 可共享的
 * 
 * @time 下午09:27:12
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class ConcreateFlyweight implements FlyWeight {


@Override
public void operation(ExtrinsicState state) {


}
}




/**
 * flyweight 工厂类
 * 
 * 用于维护一个flyweigth池
 * 
 * @time 下午09:29:55
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
@SuppressWarnings("rawtypes")
public class FlyweightFactory {
private Hashtable flyweights = new Hashtable();


@SuppressWarnings("unchecked")
public FlyWeight getFlyweight(Object key) {
FlyWeight flyweight = (FlyWeight) flyweights.get(key);
if (null == flyweight) {
// 产生共享
flyweight = new ConcreateFlyweight();
// 放入池中
flyweights.put(key, flyweight);
}
return flyweight;
}


}










/**
 * 不共享的
 * 
 * @time 下午09:28:55
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class UnsharedConcreateFlyweigth implements FlyWeight {


@Override
public void operation(ExtrinsicState state) {


}
}










/**
 * 测试flyweight
 * 
 * @time 下午09:35:17
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class TestFlyweight {
public static void main(String[] args) {
FlyweightFactory factory = new FlyweightFactory();
FlyWeight flyWeight1 = factory.getFlyweight("test1");
FlyWeight flyWeight2 = factory.getFlyweight("test2");
}
}















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值