一种高低层模块解耦的依赖倒置优化方法

文档序号:6631133阅读:1275来源:国知局
一种高低层模块解耦的依赖倒置优化方法
【专利摘要】本发明提供一种高低层模块解耦的依赖倒置优化方法,在JavaWeb应用中,重要的业务逻辑以及方案应该集成在高层的模块中,业务模型包含了应用的一些特性,随之带来的问题是,当高层的模块与底层的模块联系性太强的情况下,底层模块的修改直接影响高层模块的效果,从而引发一些列的模块修改,从优先级来考虑,高层模块的优先级应高于底层模块,因为高层模块是业务处理的核心部分,因此,底层模块的改变不应该导致高层模块的改变,因此,在设计模式中,应该使高层模块和底层模块处于联系而互不依赖的环境之下,从而实现高层模块的复用和底层模块的灵活性修改。这也是框架设计最核心的原则。
【专利说明】一种高低层模块解耦的依赖倒置优化方法

【技术领域】
[0001]本发明涉及软件开发【技术领域】,具体地说是一种高低层模块解耦的依赖倒置优化方法。

【背景技术】
[0002]在传统的软件开发过程中,高层模块的分析和设计在很大程度上依赖于底层模块具体的模块功能实现。因此,需要使用各种技术和方法去定义高层模块如何调用底层模块的功能。这种层次结构就是通常所说的依赖结构,即底层决定高层,具体决定抽象。这种层次结构所带来的结构就是当下层功能模块改变时,将引起上层更加“剧烈”地改变,从而使得模块的复用性大大降低并且大大提高了开发成本。
[0003]针对上述传统的过程化的方法通常所产生的那种依赖结构,一个设计良好的面向对象的程序中的依赖结构应该是“被倒置”的。
[0004]所谓依赖倒置原则,就是指模块设计要依赖于抽象的对象,而不要过分依赖于具体的操作细节,从而降低高层模块和底层模块的关联性,防止底层修改而“逼迫”高层模块修改的问题。
[0005]依赖倒置原则设计1c、DI等技术。
[0006](1)设计模式:传统的依赖模式如图1所示,在该设计模式之下,高层模块依赖于底层模块,底层模块的修改都将会直接影响高层模块的业务策略实现,进而导致高层模块的修改。
[0007]该种依赖模式的弊端:
①模块关联性强,修改一个地方,会导致其他地方也会改变;
②系统健壮性差,增加系统不可控的风险因素;
③无法复用,因为过度依赖于实现的细节,导致功能模块不容易剥离,从而无法实现模块功能的复用。
[0008](2)里氏替换原则
根据里氏替换原则,父类出现的地方子类就能够出现。明确接口和实现类的功能区分,接口只负责属性和方法的定义,而不要关心方法的具体实现,并且声明和其他对象之间的继承调用关系。抽象类实现公共部分的功能,是具体的业务逻辑交给实现类去解决。在程序编写过程中,通过对各事务的抽象产生了抽象类和接口,然后根据系统设计的需要产生抽象间的依赖,代替传统程序设计结构中具体的依赖。


【发明内容】

[0009]本发明的目的是提供一种高低层模块解耦的依赖倒置优化方法。
[0010]本发明的目的是按以下方式实现的,从优先级来考虑,高层模块的优先级应高于底层模块,因为高层模块是业务处理的核心部分,因此,底层模块的改变不应该导致高层模块的改变,在设计模式中,应该使高层模块和底层模块处于联系而互不依赖的环境之下,从而实现高层模块的复用和底层模块的灵活性修改,这也是框架设计最核心的原则;具体步骤如下:
①通过构造函数传递依赖对象:
在构造函数中需要传递的参数是抽象类或接口的方式实现;
②通过使用setter方法传递依赖对象:
在抽象类或者接口中,添加setXXX方法,以传递依赖对象;
③接口声明实现依赖对象,即接口注入:
将抽象类或者接口作为参数传递,然后在底层模块中可以直接使用依赖对象从而达到传递依赖对象的目的。
[0011]所述的方法,依赖倒置原则就是要求开发过程依赖于抽象,而非依赖于具体,降低不同层次模块之间的耦合。
[0012]所述的方法,含有高层策略的模块,独立于它所控制的所有细节,从而独立于低层模块,寻找解决方案。
[0013]所述的方法,采用适配器模式进行重构,定义新的抽象而非修改具体;
所述的方法,通过抽象类或接口使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合,即契约式编程。
[0014]本发明的有益效果是:在该种依赖模式中,高层模块的优先级高于底层模块,因此底层模块的修改不会影响高层模块。在高层模块复用过程中,通过子程序库的方式,我们可以很方便的调用底层模块。因此,在高层模块独立于底层模块中,模块可以被很简单地复用,这也是框架设计的核心原则。

【专利附图】

【附图说明】
[0015]图1是传统设计模式图。

【具体实施方式】
[0016]参照说明书附图对本发明的方法作以下详细地说明。
[0017]解决高层模块控制细节太多,无法从系统中剥离从而导致模块无法复用的问题。
[0018](1)方案核心思想:高层模块不应依赖于底层模块,二者都依赖于抽象。
[0019](2)举例说明:A代表的是高层模块,实现复杂的业务逻辑,B和C是底层模块,负责基本的功能单元。类A直接依赖于类B,因为重构后A依赖于C,所以必须修改类A的代码才能实现效果。一般来说,修改A的代码,会给程序带来很大的风险。
[0020](3)具体实现方法
①通过构造函数传递依赖对象:
在构造函数中需要传递的参数是抽象类或接口的方式实现;
②通过使用setter方法传递依赖对象:
在抽象类或者接口中,添加setXXX方法,以传递依赖对象;
③接口声明实现依赖对象,即接口注入:
将抽象类或者接口作为参数传递,然后在底层模块中可以直接使用依赖对象从而达到传递依赖对象的目的。实施例
[0021]①系统的每个类都应该继承其他类或者实现接口,同时也要提供抽象类和接口类,因为抽象是依赖倒置的基础;
②对象的引用,在一个类中需要调用其他类的方法的时候,尽量使用接口或者抽象类的子类的对象;
③不要使用其它具体类的派生类;
④不要复写父类的函数。
[0022]除说明书所述的技术特征外,均为本专业技术人员的已知技术。
【权利要求】
1.一种高低层模块解耦的依赖倒置优化方法,其特征在于,从优先级来考虑,高层模块的优先级应高于底层模块,因为高层模块是业务处理的核心部分,因此,底层模块的改变不应该导致高层模块的改变,在设计模式中,应该使高层模块和底层模块处于联系而互不依赖的环境之下,从而实现高层模块的复用和底层模块的灵活性修改,这也是框架设计最核心的原则;具体步骤如下: ①通过构造函数传递依赖对象: 在构造函数中需要传递的参数是抽象类或接口的方式实现; ②通过使用setter方法传递依赖对象: 在抽象类或者接口中,添加setXXX方法,以传递依赖对象; ③接口声明实现依赖对象,即接口注入: 将抽象类或者接口作为参数传递,然后在底层模块中可以直接使用依赖对象从而达到传递依赖对象的目的。
2.根据权利要求1所述的方法,其特征在于,依赖倒置原则就是要求开发过程依赖于抽象,而非依赖于具体,降低不同层次模块之间的耦合。
3.根据权利要求1所述的方法,其特征在于,含有高层策略的模块,独立于它所控制的所有细节,从而独立于低层模块,寻找解决方案。
4.根据权利要求1所述的方法,其特征在于,采用适配器模式进行重构,定义新的抽象而非修改具体。
5.根据权利要求1所述的方法,其特征在于,通过抽象类或接口使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合,即契约式编程。
【文档编号】G06F9/44GK104407843SQ201410564783
【公开日】2015年3月11日 申请日期:2014年10月22日 优先权日:2014年10月22日
【发明者】王贵友, 崔乐乐, 徐宏伟 申请人:浪潮软件集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1