1、享元模式(Flyweight Pattern)是池技术的重要实现方法,其定义如下:Use sharing to support numbers of fine-grained objects efficiently(使用共享对象可有效地支持大量的细粒度的对象)
2、享元模式的角色名称
一、Flyweight-抽象享元角色
它简单的说就是一个产品的抽象类,同时定义出对象外部状态和内部状态的接口和或实现。
二、ConcreteFlyweight-具体享元角色
具体的一个产品类,实现抽象角色定义的业务,该角色中需要注意的是内部状态处理应该和环境无关,不应该出现一个操作改变了内部状态,同时修改了外部状态,这是绝对不允许的。
三、unsharedConcreteFlyweight-不可以共享的享元角色
不存在外部状态或者安全要求(如线程安全)不能够使用共享技术的对象,该对象一般不会出现在享元工厂中。
四、FlyweightFactory-享元工厂
职责非常简单,就是构造一个池容器,同时提供从池中获取对象的方法。
3、享元模式的目的在于运用共享技术,是的细粒度的对象可以共享,我们的设计确实也应该这样,多使用细粒度的对象,便于重用或重构。
4、要求细粒度的对象,那么不可以避免的使用对象数量多且性质相近,那么我们就将这些对象的信息分为两部分:内部状态(intrinsic)与外部状态(extrinsic)
一、内部状态。内部状态时对象可以共享出来的信息,存储在享元对象的内部并且不会随环境改变而改变。
二、外部状态。外部状态时对象得以依赖的一个标记,是随环境改变而改变的。不可以共享的状态。它是一批对象的统一标识,是唯一的一个索引值。
分享到:
相关推荐
16. **享元模式(Flyweight)**:用于减少创建对象的数量,以达到节省内存的目的。在Android的UI绘制中,复用`Drawable`和`View`可以使用享元模式。 17. **组合模式(Composite)**:将对象组合成树形结构以表示“部分-...
20. 享元模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样就可以在多个对象之间共享这些状态,从而减少对象的数量。 21. 复合模式:组合多个对象以形成更大的结构,同时允许...
- 享元模式:运用共享技术有效地支持大量细粒度的对象,减少内存消耗。 3. **行为型模式**(共11种): - 策略模式:定义一组可互相替换的算法,并将它们封装起来,使它们可以相互替换,让算法的变化独立于使用...
11. **享元模式**:运用共享技术有效地支持大量细粒度的对象,减少内存占用。 12. **外观模式**:为子系统提供一个统一的接口,使得子系统更容易被使用。 13. **代理模式**:为其他对象提供一种代理以控制对这个...
23. **享元+策略+装饰**:这些模式结合使用,可以解决更复杂的场景,如动态加载和组合不同的策略,以及在性能优化时使用享元模式,同时保持对象功能的扩展性。 这些设计模式的掌握对于提升软件开发的专业水平至关...
11. **享元模式(Flyweight)**:运用共享技术有效支持大量细粒度的对象,减少内存占用,提高性能。 12. **外观模式(Facade)**:为子系统提供一个统一的接口,使得这一子系统更加容易被使用。 13. **门面模式...
11. **享元模式**(Flyweight):32章涉及享元模式,它通过共享大量的细粒度对象来减少内存消耗。C#中的享元模式通常用于大量相似对象的场景,例如文本渲染或图形绘制。 12. **外观模式**(Facade):33章讲述了...
11. 享元模式:使用共享技术有效地支持大量细粒度的对象。 12. 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 13. 责任链模式:避免对象之间过于紧密的耦合,将处理请求的对象组成一条链。 14. 命令...
12. **享元模式**:运用共享技术有效地支持大量细粒度的对象。 13. **迭代器模式**:提供一种方法顺序访问聚合对象中的元素,而又不暴露其底层表示。 14. **命令模式**:将一个请求封装为一个对象,从而可用不同的...
在本资源中,“总结23种设计模式-极客学院-课件及源码”,提供了全面的设计模式学习资料,包括课件和源代码示例,帮助开发者深入理解和应用这些模式。以下是对这23种设计模式的详细概述: 1. **单例模式**:确保一...
23. 解构者模式(Flyweight Factory Pattern):与享元模式类似,但更强调工厂在创建对象时的复用,通过缓存已创建的对象,减少内存中重复对象的数量。 以上设计模式在实际开发中都有着广泛的应用,通过阅读和分析...
这个压缩包文件名为"23种设计模式-简单通俗的代码解释",表明它包含了一个全面的23个经典设计模式的代码实现,这些模式都是为了提高代码的健壮性和可扩展性。下面将对这23种设计模式进行详细阐述: 1. **单例模式**...
11. **享元模式(Flyweight)**:用于减少创建对象的数量,以提高性能,通常应用于内存敏感的场景。 12. **责任链模式(Chain of Responsibility)**:将请求的发送者和接收者解耦,使得多个对象都有机会处理请求,...
22. 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象,减少内存占用。 23. 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复...
【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip ...22. 享元模式 23. 桥梁模式
例如,在游戏开发中,可以使用享元模式来减少内存中重复对象的数量,从而提高性能。 #### 12. 解释器模式(Interpreter) 解释器模式定义了语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“句子”是...
11. **享元模式**:运用共享技术有效地支持大量细粒度的对象,减少内存占用。 12. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。 13. **命令模式**:将请求封装为一个对象,使得可以使用不同的...
享元模式运用共享技术以有效地支持大量细粒度的对象。这种模式使得对象可以共享和重用。 12. 解释器模式(Interpreter) 解释器模式给定一个语言,定义它的语法的一种表示,并定义一个解释器,该解释器使用该表示...
10. **享元模式(Flyweight)** - 为了支持大量细粒度的对象,共享对象来减少内存使用。C++中可以使用指针和智能指针来实现共享。 11. **代理模式(Proxy)** - 为其他对象提供一种代理以控制对这个对象的访问。C++...
享元模式(Flyweight) - **定义**:运用共享技术有效地支持大量细粒度的对象。 - **应用场景**:适用于需要减少大量相似对象占用内存空间的情况。 #### 11. 外观模式(Facade) - **定义**:为子系统中的一组接口...