上一篇:全面分析MIDP通信API和外部系统交互 >>
封装的变化之不断变化的需求
设计模式是“封装变化”方法的最佳阐释。无论是创建型模式、结构型模式还是行为型模式,归根结底都是寻找软件中可能存在的“变化”,然后利用抽象的方式对这些变化进行封装。由于抽象没有具体的实现,就代表了一种无限的可能性,使得其扩展成为了可能。所以,我们在设计之初,除了要实现需求所设定的用例之外,还需要标定可能或已经存在的“变化”之处。封装变化,最重要的一点就是发现变化,或者说是寻找变化。
GOF对设计模式的分类,已经彰显了“封装变化”的内涵与精髓。创建型模式的目的就是封装对象创建的变化。例如Factory Method模式和Abstract Factory模式,建立了专门的抽象的工厂类,以此来封装未来对象的创建所引起的可能变化。而Builder模式则是对对象内部的创建进行封装,由于细节对抽象的可替换性,使得将来面对对象内部创建方式的变化,可以灵活的进行扩展或替换。
至于结构型模式,它关注的是对象之间组合的方式。本质上说,如果对象结构可能存在变化,主要在于其依赖关系的改变。当然对于结构型模式来说,处理变化的方式不仅仅是封装与抽象那么简单,还要合理地利用继承与聚合的方法,灵活地表达对象之间的依赖关系。例如Decorator模式,描述的就是对象间可能存在的多种组合方式,这种组合方式是一种装饰者与被装饰者之间的关系,因此封装这种组合方式,抽象出专门的装饰对象显然正是“封装变化”的体现。同样地,Bridge模式封装的则是对象实现的依赖关系,而Composite模式所要解决的则是对象间存在的递归关系。
行为型模式关注的是对象的行为。行为型模式需要做的是对变化的行为进行抽象,通过封装以达到整个架构的可扩展性。例如策略模式,就是将可能存在变化的策略或算法抽象为一个独立的接口或抽象类,以实现策略扩展的目的。Command模式、State模式、Vistor模式、Iterator模式概莫如是。或者封装一个请求(Command模式),或者封装一种状态(State模式),或者封装“访问”的方式(Visitor模式),或者封装“遍历”算法(Iterator模式)。而这些所要封装的行为,恰恰是软件架构中最不稳定的部分,其扩展的可能性也最大。将这些行为封装起来,利用抽象的特性,就提供了扩展的可能。
利用设计模式,通过封装变化的方法,可以最大限度的保证软件的可扩展性。面对纷繁复杂的需求变化,虽然不可能完全解决因为变化带来的可怕梦魇,然而,如能在设计之初预见某些变化,仍有可能在一定程度上避免未来存在的变化为软件架构带来的灾难性伤害。从此点看,虽然没有“银弹”,但从软件设计方法的角度来看,设计模式也是一枚不错的“铜弹”了。
下一篇:封装的变化之封装对象创建的变化 >>
相关文章:
- · 技术与人生 谈程序员的成长
- · 分析:Web2.0的喧哗与阵痛
- · Gartner称企业将在Windows上运行开源软件
- · 开放源代码正被恶意软件作者所利用
- · 开源JBoss牵手Sun成NetBeans合作伙伴
- · ASP.NET2.0数据库入门之SQL Server
- · 基于Socket的Java网络编程集粹
- · Vista可在发布后立即升级 无需等待补丁
- · OEM被指是鸦片 技术黑洞吞噬高新技术产业
- · 软件产业政策将逐步法制化 国家新政将出台
- · 鲍尔默称四年前预言失败 Linux并未击倒视窗
- · Vista再次大缩水 PC2PC同步功能被取消
- · 中国软件遭遇逼迫式打法 本土化趋势加速
- · 公测版Vista发布 服务器不堪重负暂停下载
- · 中国软件业“芯”太软
- · 微软杀毒欲玩捆绑之计图谋通吃
- · 微软不再提供Win98补丁 将停止支持XP SP1
- · Google CEO:未来50年仍以搜索为核心业务
- · IBM成为ISV和开发者合作方面领导商
- · 倪光南:中国软件人对开源社区贡献太少
- · 开源世界遭遇尴尬 商业味日趋浓厚
- · 微软攻击开源 称Office领先十年
- · 微软的存在成为开源软件最大的动力
- · AVS对外开放解码器源代码 可免费下载
- · 从AOL的开放看即时通讯竞合
- · 华盛顿现美国版木子美 写情爱日记遭开除
- · 首个博客公约4月出台 效果业内并不看好
- · 中国博客门耍了西方媒体 开超级大玩笑
- · 博客开始规模赢利 长虹佳华首期投20万
- · QQ周边软件——IP数据编辑器
- · QQ周边软件——编辑器类
- · QQ周边软件——号码申请类
- · QQ周边软件——变种QQ类
- · 新TM可用Email登录 马化腾否认互通MSN
- · 使用UML编写Java应用程序
- · Windows Live Messenger8升级至0566版
- · 最新MSN Messenger7.5Build0299图赏
- · 耳目一新!MSN Messenger 8界面预览
