19、享元模式与代理模式:优化代码性能的利器

享元模式与代理模式:优化代码性能的利器

享元模式

实现享元模式的一般步骤

当满足特定条件时,程序可以使用享元模式进行优化。实现享元模式通常遵循以下一般步骤:
1. 剥离目标类的外部数据 :尽可能从类中移除那些会因实例不同而变化的属性,构造函数的参数也应如此处理。这些数据不再存储在类内部,而是由管理器传入。类仍需具备之前的功能,只是数据来源不同。
2. 创建工厂来控制类的实例化 :工厂需要跟踪已创建的类的所有唯一实例。一种方法是使用对象字面量存储每个对象的引用,通过创建对象时使用的唯一参数集进行索引。当请求对象时,工厂先检查对象字面量,若该请求已存在,则返回现有对象的引用;否则,创建新实例,存储其引用并返回。另一种技术是池化,使用数组存储已实例化对象的引用,适用于关注可用对象数量而非唯一配置实例的情况,可将实例化对象的数量降至最低。工厂根据内部数据处理对象的创建。
3. 创建管理器来存储外部数据 :管理器对象控制与外部数据相关的所有方面。在优化前,每次需要目标类的实例时都要创建新实例并传入所有数据。现在,需要实例时调用管理器的方法并传入所有数据。该方法确定哪些是内部数据,哪些是外部数据。内部数据传递给工厂对象以创建(或重用)对象,外部数据存储在管理器的数据结构中。管理器根据需要将这些数据传递给共享对象的方法,实现与类有多个实例相同的结果。

享元模式的优点

享元模式可以显著降低页面的资源负载。例如,在工具提示的示例中, ToolTip 对象(及其创建的 HTML 元素)的数量可以减少到

你可能感兴趣的:(享元模式,代理模式,代码优化)