本发明专利技术公开了构建耦合系统的方法,包括以下步骤:根据功能,设定相应的接口;设定具体类,实现不同的功能;将相应的接口和具体类关联起来。采用本发明专利技术的技术方案,在构造耦合系统时,允许开发者在开始设计时,无需刻意确定哪些对象作为主题设计;而在后续开发、甚至软件提交后,因需求变化而进行修改时,仅需要添加新代码,就能指定主题对象,定制发布点,添加主题发布行为,而无需修改已正常工作的原有部分。(*该技术在2024年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术涉及。
技术介绍
现有的观察者模式是解决系统模型之间复杂逻辑关联一种行之有效的方式。简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者监察一个主题对象。这样主题对象状态上的变化能够通知所有的依赖于此对象的那些观察者,使这些观察者能够自动更新。这里的主题和观察者都是系统的一类模型,作为观察者的模型在逻辑上依赖于作为主题的模型,要根据主题的状态变化而相应的改变自身。观察者模式中最主要的行为是主题对观察者的通知行为。主题把所有的观察者的引用保存在一个列表里,每个主题都可以有任意数量的观察者。观察者定义并实现了更新(Update)方法。当主题的内容发生变化时,就会依次遍历它所保存的观察者列表,调用它们的更新方法。为方便下文叙述,称主题状态改变并需要通知过观察者的点为发布点,具体到系统程序中往往是在一个具体的函数代码片断里;称依次调用所有观察者更新的方法为主题发布行为。在传统观察者模式的实现中,主题发布行为是由主题对象在发布点进行的,目的是通知观察者其状态改变。在现有的一种应用中,主题对象(Subject)定义了增加(attach)、移除(detach)观察者(Observer)的方法;还定义了通知所有观察者的方法,即主题发布行为。主题发布行为的实现是依次遍历注册在该主题上的所有观察者,调用它们的更新方法。一般而言,当主题状态发生变化,并且该变化需要通知相应的观察者时,就需要在相应的代码片断(即发布点)中加入主题发布行为的代码。例如,假设某一主题的foo方法改变了主题状态,需要进行主动发布,这里foo方法是发布点,调用主题发布行为就是进行主题发布。观察者模式较好地解耦了复杂关联的直接相关性,有助于构建松耦合的复杂系统。但由上可知,观察者模式得以奏效的主要原因,是在主题状态改变时,由主题主动进行发布,即在引起主题状态发生变化的发布点处,进行了主题发布,即需要有相关的代码存在。在系统需求明确、变化不大的前提下,是可以满足的。但由于系统的复杂性,各模型间的关联表面上通常不明确,很难在设计或实现系统的最初阶段就完全确定哪些主题的状态改变需要进行监察,而某些模型一开始都未被当作要进行监察的主题对象。而随着系统的演进,各功能模块的细化,需进行监察的模型和需关注的状态才逐步明确。此时需要将普通对象改变为主题对象;需要在主题对象中添加新的发布点。按照观察者模式的实现要求,就需要对普通对象添加作为主题对象所需的额外代码信息(如保存观察者对象引用的列表等);在新出现的发布点,加入主题发布行为。Bertrand Meyer在1988年提出著名的开放-封闭原则(The Open-ClosedPrinciple,简称OCP原则)。这一原则指出软件系统实体(如,类、模块、函数等等)应该是可以扩展的,但是不可修改的。遵循开放-封闭原则设计出的模块具有两个主要的特征,它们是1、“对于扩展是开放的”2、“对于更改是封闭的”。即修改软件系统时,应只需添加新的代码,而不必改动已经正常运行的代码。传统观察者模式的实现要求主题具有主动发布其状态变化的能力。因此,被当作主题的模型除了需要实现自身的业务逻辑之外,还需要加入主题发布行为。随着系统的开发和维护,由于模型间的关联关系的改变,必将引起对已可正常运行代码的修改,从而导致重新进行对这部分代码的测试等工作,增加了软件成本。应该认识到,因用户的要求变化或软件系统施用环境的变化,而引起系统需求的变化是实际存在,并随着软件系统应用的日益广泛而更为频繁。能越快响应变化相应作出修改的软件系统,其生命力越强。OCP原则就是保证软件系统良好应变能力的基础。
技术实现思路
本专利技术所要解决的技术问题是为了克服现有采用观察者模式的耦合系统中,必须预先定义好发布点,加入对主题发布行为的调用,同时作为主题的对象需添加额外信息(如保存观察者对象引用列表等),实现主题发布行为,不能满足“开放-封闭原则”的技术问题。实现本专利技术所要解决的技术问题而采取的技术方案如下,根据功能,设定相应的接口; 设定具体类,实现不同的功能;将相应的接口和具体类关联起来。进一步地,所述还包括以下步骤特定接口方法被调用时,相关联的发布行为类的标准方法被执行,进行主题状态变化的发布。进一步地,所述中将相应的接口和具体类关联起来的步骤采用动态代理的方式。进一步地,所述还包括以下步骤当需要改动主题对象和发布点时,先确定发布点,并编写发布行为类,然后利用工具类插入到所确定的接口方法中。进一步地,所述通过工具类将相应的接口和具体类关联起来。进一步地,所述在将相应的接口和具体类关联起来的步骤中,采用二元组图状数据结构型表记录接口与具体实现类的对应关系。进一步地,所述所述动态代理是一个在耦合系统运行期动态实现一组指定接口的特殊类。进一步地,所述还包括以下步骤确定拥有设定接口方法的接口类,并通过检索所述接口-实现二元组图状数据结构型表,得到所关联的具体实现类;检索方法-发布二元组图状数据结构型表中是否存在对应需要调用接口方法的发布行为类,若存在,则调用发布行为类的调用方法,进行主题发布;调用所述具体类所实现的接口方法。采用本专利技术技术方案,在构造耦合系统时,允许开发者在开始设计时,无需刻意确定哪些对象作为主题设计;而在后续开发、甚至软件提交后,因需求变化而进行修改时,仅需要添加新代码,就能指定主题对象,定制发布点,添加主题发布行为,而无需修改已正常工作的原有部分。采用本专利技术技术方案构造的耦合系统,将每个接口的方法,都当作潜在可能的发布点,在需要时,利用动态代理机制,在实现特定接口的具体类方法被实际调用前,动态的加入对主题发布行为的调用。应用本专利技术加入主题发布行为的调用无需修改被指定为发布点的函数方法,因此很好的符合了“开放-封闭”原则。主题对象也不必预先加入保存观察者对象引用的列表等数据结构。事实上,应用本专利技术,主题对象和一般的对象没有任何区别。这是因为每个接口的方法都可被当作发布点。实际发布点和相应的对主题发布行为的调用可随着系统的演进,需求的变化而动态加入或去除,这使得软件系统具有快速响应变化的能力。同时,采用本专利技术的技术方案,确定发布点、加入主题发布代码,完全不会影响已经定义好的接口和相关的具体实现类。可灵活的根据需求,动态的确定发布点和加入主题发布功能,无需事先在预设的发布点加入主题发布行为,甚至无需预先确定要设计为主题样式的模型。可在系统演进的过程中,逐步增加发布点和主题发布行为。提高了软件系统响应变化的能力,有助于构建大型复杂的系统。附图说明图1示出了本专利技术提供构建耦合系统的流程图;图2示出了动态代理调用示意图;图3示出了本专利技术提供的具体实现类方法被呼叫前的发布行为类调用示意图;图4示出了本专利技术提供的代理帮助类(ProxyHelper)内部实现调用管理者类(InvocationHandler)接口类的invoke(调用规范中文名称)方法执行流程图。具体实施例方式下面将结合附图,举例说明本专利技术的具体实施方式。本专利技术以OCP为指导原则,其实现建立在“针对接口编程,而非实现”这一面向对象编程指导原则和动态代理的语言机制基础上,其包含的步骤如下第一步确定软件系统各个模型功能,根据功能定义接口。该步骤中的接口主要针对系统的业务逻辑。为本文档来自技高网...
【技术保护点】
构建耦合系统的方法,其特征在于包括以下步骤:根据功能,设定相应的接口;设定具体类,实现不同的功能;将相应的接口和具体类关联起来。
【技术特征摘要】
1.构建耦合系统的方法,其特征在于包括以下步骤根据功能,设定相应的接口;设定具体类,实现不同的功能;将相应的接口和具体类关联起来。2.根据权利要求1所述的方法,其特征在于,还包括以下步骤特定接口方法被调用时,相关联的发布行为类的标准方法被执行,进行主题状态变化的发布。3.根据权利要求1所述的方法,其特征在于,所述将相应的接口和具体类关联起来的步骤采用动态代理的方式。4.根据权利要求1至3任一权利要求所述的方法,其特征在于还包括以下步骤当需要改动主题对象和发布点时,先确定发布点,并编写发布行为类,然后利用工具类插入到所确定的接口方法中。5.根据权利要求1至3任一权利要求所述的方法,其特征在于通过工具类将...
【专利技术属性】
技术研发人员:马明,马力,芦东昕,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。