什么是flyweight模式?
享元模式(flyweight pattern)是一种软件开发中的设计模式,其主要解决的问题是通过类对象的共享,来避免大量创建拥有相同内容的对象的开销。可以简单理解用空间换取时间。
举例说明
一般的设计模式解释中都会用到如下两种场景来解释flyweight pattern:
1.gui字处理软件中每个文字都是对象,缓存这些对象公用。
2.字符串驻留技术(string interning)。
具体实现
/// <summary>
/// 享元模式flyweight的实现
/// </summary>
/// <param name="factorymethod">分配缓存的方法</param>
public flyweightobjectpool(func<t> factorymethod)
{
_factorymethod = factorymethod;
}
/// <summary>
/// 分配指定数量的对象
/// </summary>
/// <param name="count">指定的数量</param>
public void allocate(int count)
{
for (int i = 0; i < count; i++)
_queue.enqueue(_factorymethod());
}
/// <summary>
/// 缓存一个对象
/// </summary>
/// <param name="buffer">对象</param>
public void enqueue(t buffer)
{
_queue.enqueue(buffer);
}
/// <summary>
/// 获取一个对象
/// </summary>
/// <returns>对象</returns>
public t dequeue()
{
t buffer;
return !_queue.trydequeue(out buffer) ? _factorymethod() : buffer;
}
}
使用举例
var buffer = pool.dequeue();
// .. do something here ..
pool.enqueue(buffer);
}
}
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论