Flyweight 享元模式

本文探讨了在软件开发中如何使用享元模式进行内存优化,通过实例代码展示了如何为固定不变的对象创建共享实例,以减少重复对象的内存消耗。特别关注了字体对象的共享实现,介绍了使用哈希表进行对象存储的方法。
 public class Font    //12+8 bytes  8用于垃圾手机
    {
        string fontName;  //4 bytes
        int size;         //4 bytes 
        Color color;      //4 bytes

        public Font( string fontName, int size, Color color )
        {
            this.fontName = fontName;
            this.size = size;
            this.color = color;
        }

        public override bool Equals( object obj )
        {
            return base.Equals( obj );
        }
    }
    public class Color
    {
    }
 public class Charactor   //(2+4+20+2)+8 byes =36 bytes  8 bytes用于垃圾收集
    {
        char c;    //2 bytes
        //Font f;    //20 bytes
    //重点就在于下面的实现
private static Hashtable fontTable = new Hashtable(); public void SetFont( String name, int size, Color color ) { if( fontTable.ContainsKey( name ) ) { return; } else { Font f = new Font( name, size, color ); fontTable.Add( name,f ); } } }

其实主要就是为了降低内存,对一些固定不变的东西做一个共享,经常变换的不做考虑,在.net里面字符串就是做了享元处理,codebehid也是享元模式的一个处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值