首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

享元方式(Flyweight)

2013-10-22 
享元模式(Flyweight)@@@模式定义:运用共享技术有效地支持大量细粒度的对象。@@@练习示例: 给系统加入权限控

享元模式(Flyweight)
@@@模式定义:
运用共享技术有效地支持大量细粒度的对象。

@@@练习示例: 
给系统加入权限控制

@@@示例代码:
[不使用模式的实现]
\usual\AuthorizationModel.java

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

package user;import pattern.SecurityMgr;public class ClientPattern {public static void main(String[] args) {// 需要先登录,然后再判断是否有权限        SecurityMgr mgr = SecurityMgr.getInstance();        mgr.login("张三");        mgr.login("李四");        boolean f1 = mgr.hasPermit("张三", "薪资数据", "查看");        boolean f2 = mgr.hasPermit("李四", "薪资数据", "查看");                System.out.println("f1==" + f1);        System.out.println("f2==" + f2);        for (int i = 0; i < 3; i++) {        mgr.login("张三" + i);        mgr.hasPermit("张三" + i, "薪资数据", "查看");        }}}


运行结果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

fm==pattern.AuthorizationFlyweight@c2ea3f
fm==pattern.AuthorizationFlyweight@c2ea3f
fm==pattern.AuthorizationFlyweight@a0dcd9
f1==false
f2==true
fm==pattern.AuthorizationFlyweight@c2ea3f
fm==pattern.AuthorizationFlyweight@c2ea3f
fm==pattern.AuthorizationFlyweight@c2ea3f


@@@模式的实现:
享元模式设计的重点就在于分离变与不变。
把一个对象的状态分为不可变的内部状态和可变的外部状态。
然后通过共享不变的部分,达到减少对象数量并节约内存的目的。

@@@模式的优点:
减少对象数量,节省内存空间。

@@@模式的缺点:
维护共享对象,需要额外内存。

@@@模式的本质:
分离与共享。

@@@模式体现的设计原则:
NA


热点排行