敏捷软件开发之3种生活场景巧妙解读设计模式

模式之父(Thefather of patterns)Christopher Alexander(克里斯托弗.亚历山大)认为模式是在特定环境下,人们解决某类重复出现问题的一套成功或有效的解决方案。通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作。软件设计模式是通过一些成熟的设计方案来指导系统的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于复用的软件系统。下面详细分析3种常用的设计模式。

(1)观察者模式(Observer Pattern)

观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,也称发布-订阅(Publish/Subscribe)模式,这是一种行为型模式(Behavioral),主要用于描述类或对象怎样交互以及怎样分配职责。观察者模式中通常包括观察目标和观察者两个继承层次结构,可实现观察者和目标之间的抽象耦合,同时实现了对象之间的动态联动。其结构如图1所示。

(2)适配器模式(AdapterPattern)

适配器模式是为了解决不兼容、不匹配问题而引入的,它将一个类的接口,转换成客户期望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作,而无须修改原来的适配者接口和抽象目标类接口。适配器模式既可以作为类结构型模式(Class Structural),也可以作为对象结构型模式(Object Structural),分为类适配器和对象适配器2种。

①类适配器采用继承方式,通过多继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配。

②对象适配器采用组合方式,它把“被适配者”作位一个对象组合到适配器类中,以修改目标接口包装被适配者。

因为Java是单继承,当采用类适配器时,如果被适配类有子类,需要增加新的适配器类,代码的重用性低。所以本文采用对象适配器模式来应对煤矿监控系统分站可能存在的变动,以提高代码的重用性。对象适配器模式通过引入一个适配器类将目标类和适配者类解耦,通过适配器类重用现有的适配者类,而无需修改原有的代码,使架构的设计遵循开闭原则。其结构如图2所示。

(3)策略模式(StrategyPattern)

策略模式将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现,并使他们可以相互替换,从而导致客户端程序独立于算法的改变。该模式将算法的定义与使用分开,算法的定义放在专门的策略类中,每一个策略类封装了一种实现算法,使用算法的环境类针对抽象策略类进行编程,符合“依赖倒转原则”,在出现新的算法时,只需要增加一个新的实现了抽象策略类的具体策略类即可,是一种行为型模式(Behavioral)。只要涉及到算法的封装、复用和切换都可以考虑使用策略模式,可避免传统架构设计时,为选择某一算法而出现的大量条件语句。策略模式使用了组合,使架构更加灵活,富有弹性,可以较好的应对变化,这是多态赋予面向对象能力的基本体现,符合开闭原则,同时提高代码的复用性。这样可以使架构的设计更加灵活,富有弹性,更好的应对需求的变化。其结构如图3所示。