设计模式:享元与代理模式解析
享元模式(Flyweight Pattern)
享元模式是一种通过共享技术来高效支持大量细粒度对象的设计模式。下面我们将通过一个绘制花朵的应用程序来详细讲解享元模式。
何时使用享元模式
当满足以下所有条件时,可以考虑使用享元模式:
- 应用程序使用大量对象。
- 将对象保存在内存中会影响内存性能。
- 对象的大部分唯一状态(外部状态)可以外部化且轻量化。
- 去除对象的外部状态后,相对较少的共享对象可以替代原来的一组对象。
- 应用程序不依赖对象的标识,因为共享对象不能有唯一标识。
创建百花池应用
我们要创建一个小应用,在屏幕上显示大量随机的花朵图像。有六种类型的花朵需要显示,分别是银莲花、大波斯菊、非洲菊、蜀葵、茉莉和百日草。我们的目标是仅使用这六种花朵的唯一实例,绘制大量(数百个或更多)随机大小和位置的花朵。如果为屏幕上绘制的每个实例创建一个花朵实例,应用程序可能会消耗大量内存。因此,我们使用享元模式将花朵实例限制为不超过我们可以选择的花朵类型总数。
为了实现这个设计,我们需要一个享元工厂和一些享元产品。 FlowerView 是 UIImageView 的子类,用于自定义绘制花朵图像。 FlowerFactory 是这个应用的享元工厂,它管理一个 FlowerView 实例池。虽然池中对象的类是 FlowerView ,但客户端期望从 FlowerFactory </
超级会员免费看
订阅专栏 解锁全文
2603

被折叠的 条评论
为什么被折叠?



