享元(Flyweight)模式要点

1.采用共享的方法来降低系统中细粒度对象的个数,从而降低内存消耗。

2.享元对象

   内蕴状态(Internal State):存储在享元对象内部不随环境而改变,可以共享,使对象相对于内蕴状态在整个系统中是唯一的;

   外蕴状态(External State):在客户端保存会随环境而改变,需要在使用的时候传入到对象的内部;

   2种状态是相互独立的。

3.软件对象不依赖于对象的身份,这些对象是不可分辨的。

4.抽象享元角色(flyweight)

   具体享元角色(concreteflyweight)

   享元工厂角色(flyweightfactory):将享元对象用工厂方法封装起来,这个工厂必须是单件的,享元类可以被实例化而单件类则不可以。

   客户端角色(client)

   这里的角色就是类。

5.缺点

   程序的逻辑复杂化,享元对象的状态外部化使系统运行时间稍微变长。

6.在实际开发中并不常用。

7.在.net中运用

   string类型,创建2个同样的字符串(字符串内容相同)对象在内存中的位置(引用)相同,这个相同的字符串就是2个字符串对象的“享元”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章