设计模式——享元模式

一、概念:运用共享技术有效的支持大量细粒度的对象。

二、UML示意图

 

 定义一个抽象Flyweight类和一个可接受外部状态ExtrinsicState的Operation接口,具体Flyweight类可继承这个抽象Flyweight类并实现这个Operation接口。Client通过FlyweightFactory获取Flyweight对象,并传入外部状态执行Operation方法,这样就可以实现Flyweight可以共享大部分相同状态的同时又可以有不同的部分,可以更好地复用Flyweight对象。

三、优缺点

优点:

  • 因为把不能共享的部分作为外部状态分离了出来,使得享元对象能够共享,能够大幅度地减少内存中享元对象的数量,节省了系统内存开销

缺点:

  • 外部状态由客户端管理,使得客户端逻辑变得复杂。
  • 提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。
posted @ 2020-03-22 15:54  夜里寻星  阅读(93)  评论(0编辑  收藏  举报