25、设计模式:享元与代理模式解析

设计模式:享元与代理模式解析

享元模式(Flyweight Pattern)

享元模式是一种通过共享技术来高效支持大量细粒度对象的设计模式。下面我们将通过一个绘制花朵的应用程序来详细讲解享元模式。

何时使用享元模式

当满足以下所有条件时,可以考虑使用享元模式:
- 应用程序使用大量对象。
- 将对象保存在内存中会影响内存性能。
- 对象的大部分唯一状态(外部状态)可以外部化且轻量化。
- 去除对象的外部状态后,相对较少的共享对象可以替代原来的一组对象。
- 应用程序不依赖对象的标识,因为共享对象不能有唯一标识。

创建百花池应用

我们要创建一个小应用,在屏幕上显示大量随机的花朵图像。有六种类型的花朵需要显示,分别是银莲花、大波斯菊、非洲菊、蜀葵、茉莉和百日草。我们的目标是仅使用这六种花朵的唯一实例,绘制大量(数百个或更多)随机大小和位置的花朵。如果为屏幕上绘制的每个实例创建一个花朵实例,应用程序可能会消耗大量内存。因此,我们使用享元模式将花朵实例限制为不超过我们可以选择的花朵类型总数。

为了实现这个设计,我们需要一个享元工厂和一些享元产品。 FlowerView UIImageView 的子类,用于自定义绘制花朵图像。 FlowerFactory 是这个应用的享元工厂,它管理一个 FlowerView 实例池。虽然池中对象的类是 FlowerView ,但客户端期望从 FlowerFactory </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值