设计模式之 facade与flyweight

本文介绍了两种设计模式:外观模式(Facade)和对象共享模式(Flyweight),解释了它们的作用及应用场景。外观模式简化了子系统接口,而对象共享模式则通过减少对象实例数量来节省内存。

facade是外观的意思,啥意思呢?这个模式主要是针对子系统的复杂类的情况下,通过它可以提供一个简单的功能类。比如目前做的dlna库,写了好几个接口,而且基本上只有我知道是怎么个用法。但是dlna的客户端真得需要了解这么复杂的东西吗?不用,所以后面单独弄了一个dlna类,接口非常简单。这个就是facade的目的,把子系统的功能积聚到一个简单的类中去。注意,facade和之前的adapter等目的明显不同,这个是为了屏蔽子系统的复杂性而做的。

 

flyweight,是轻量级的意思,感觉这个模式的名字没取好啊,其实就是对象共享的设计模式,啥意思?有些重复对象就别老new了,把他们放到一个pool中,想要的时候去取就好了。flyweight相对于内存使用而言的轻重。这个模式其实设计起来比较难。主要有以下几个点:

1 一般而言,共享对象某个属性改了的话,会影响到其他使用者,那么,哪些属性定义为共享对象之内(intrinsic),哪些属性定义为共享对象之外呢(extrinsic)?

flyweight类层次也比较多,需要存在flyweight的接口,毕竟共享对象难道一直就只有一类?还要有flyweight的工厂类,这个用于控制共享对象的引用计数的,也必须要的吧?

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值