当前位置:编程学习 > C#/ASP.NET >>

中心点构架是说,程序得所有模块都连接在中心点上,任何一个模块只和中心点有关系,其他不再有任何关系,任何一个模块必须要在中心点上,注册后,可以被中心点托管。

中心点构架是说,程序得所有模块都连接在中心点上,任何一个模块只和中心点有关系,其他不再有任何关系,任何一个模块必须要在中心点上,注册后,可以被中心点托管。
  这样我们得程序就是dll,dll也是程序,比如我们得逻辑文件访问模块接在中心点上,通过调用储存访问模块注册在中心点函数,得以实现逻辑文件访问。
  可是这是在我们在这个程序用得呢,要让其他应用程序复用,怎么办呢?这样,要求我们得中心节点,倒推这个文件访问模块得所有依赖模块 ,把这些抽出来,并且,中心点还可以注册象com接口得类似机制,向其他应用程序暴露接口。  

这样,使得不仅可以提炼公共功能(例如抽出逻辑文件访问模块),而且可以随便提炼,公共,业务,只要你模块分得够细,你想提炼什么都可以  
 


这个模式就是为了杜绝牵一发动全身,产生得,因为模式要求,一个模块责则单一,对于中心点得注册函数,必须严格遵守,契约,也就是说修改任意一个模块函数,只是验证,契约是否匹配救星了

契约得意思是说,一个函数得调用前提,以及参数约束,还有返回影响。  
 
其他构架,由于没有注册机制,不能随便抽取业务,或者是功能,而中心点就象,一个政府,他能管理所有程序公民  
 
这样,我们 可以有效得屏蔽某些模块,以便,我们有时候既让整个程序运行,从而替换,一些,我们想升级得模块,不用整体发布,也可以发布不同实现得相似模块,只要符合中心点,登记契约就行,或许,我们已经不能容忍,面向对象那么死板得可访问性传导方式,又不去给类打洞(友元),让你用配置规划,所有得模块可访问性(读配置,决定注册哪些函数),这显然一种,更灵活,得可访问性设定方式,却不会增加耦合度,因为只有中心点一个耦合情况,没有别得耦合方式。 --------------------编程问答-------------------- --------------------编程问答-------------------- 看了半天不知道你想说什么。 --------------------编程问答-------------------- 中心点注册函数只有一个函数形式

returnObject dothing(paramObject obj)
{



}
reuturnObject 和 paramObject 分别是返回值数据类型基类,和参数数据类型基类

而实际得参数是paramObject当中得成员变量

一个参数类型得实例
planParamObject : paramObject
{
  public List<object> params;
  public int ParamCount
  {
  get
  }
  public object self[]
  {


  }  
    



}
这样以后不管调用参数怎么变更,调用者都不会改变代码
这样某个功能改变,只要改变功能函数,就全部解决问题
你们觉得这样,解耦度很大了???
其实不然,我们对函数得调用接口解耦了,但是我们对函数名得依赖
依旧存在, 我们怎么解耦了,其实编过程序得人都晓得
有3成得函数会被7成机会用到,所以,   


,我有1000个调用者,调用了某个中心点注册函数(接口)
可是,我们要把其中99个换成一个新得注册函数,而其余不变,我们如果手动去换
要做重复劳动99会,所以,只要我们对每一个注册函数得调用者进行
id递增编号,这样,默认,每编译一会代码,如果有新增注册函数,
或者新增,调用者,都会更新编号,这些编号会存在一个数据库,
数据库当中记录了哪些编号得调用者,是属于某个注册函数,
调用者周围代码特征,所在模块文件,源代码位置,等等信息,
所以,用户点击查询某个注册函数得所有调用者,在想替换
成新注册函数得地方都标记后,点击替换就整体替换了,由于调用参数
和返回类型都很简单,所以替换工作很容易做。
当然这是,最坏情况,因为数据库保存了很多附加信息,
用户很多时候,只需要模糊查询,就能快速定位,源代码
位置,这样比起以前,函数接口变了,所有得调用者要重新准备
参数,重新,获取返回值,得那种情况好多了,有人会问了
即便参数和返回值都是一个很基础得对象,但是由于对象里面得
成员变量改变了(参数个数或者,类型有改变),也会引起,
准备参数,和获取返回值得代码要改变呀,其实这个问题很容易
解决,下面得代码就是一个示例

planParamObject : paramObject
{
  public List<object> params;
  public int ParamCount
  {
  get
  }
  protected virtual GetParamValue(object name) //只要在派生类重载,这样调用接口参数个数,和类型发生变化,只要修改这个函数就搞定,
  {



  }   
    
  protected virtual SetParamValue(object name,value)//只要在派生类重载,这样调用接口参数个数,和类型发生变化,只要修改这个函数就搞定,
  {



  }
    



}
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,