关于软件架构设计的一些思考--通用架构设计模式

最近在着手设计一个服务发布,治理的框架,参考了几个主流框架的代码,比如阿里的Dubbo,传输层的Netty,容器层的Tomcat等等,有一些体会。


经典的《面向对象分析与设计》一书中阐述了为什么设计是按层次划分的,种种好处自己去翻书,总结这么多框架,有一些架构设计的基本模式可以抓住。

通用的设计,尤其是大型的框架可以分为4层:接口层,抽象层,流程实现与适配层,具体实现层


接口层定义了整个框架所具备的功能,最好都用接口实现,不要用抽象类。接口的扩展性优于抽象类。Thrift采用了抽象类来设计顶层的功能,后期想扩展其实挺难的。

关于接口层的设计有一些要点:

1. 接口的粒度要小,参考单一职责原则

2. 用一个较大的接口适配多个小接口,而不要设计一个大接口。小接口的扩展性优于大接口

3. 接口的设计只需要考虑要具备的功能,不需要考虑类的属性,如何实现等等,这些在抽象层和实现层扩展


抽象层定义了实现接口的抽象类,都用抽象类实现,主要的功能有:

1. 给接口提供默认实现

2. 提供新的抽象方法扩展接口

3. 给子类提供公共的属性,方法

4. 比如定义调用的基本流程,这个在设计大型框架,底层采用第三方实现的时候尤其重要。参考模板模式


流程实现与适配层,这层采用普通类实现,继承抽象层,主要的功能有:

1. 实现抽象层和接口层定义的抽象方法

2. 定义框架调用的具体流程

3. 如果底层采用第三方框架,那么需要做适配和装饰层,参考适配器模式和装饰器模式


具体实现层,这层采用普通类实现,主要是实现具体的功能,但是不要参与到框架调用的流程


这个4层结构是一个可扩展的,健壮的设计,接口层定义功能,抽象层和流程实现与适配层定义了框架调用的流程,具体实现层是可插拔的,可以采用多种实现。


实际的设计可以根据框架要实现的功能进行裁剪,比如不会有多种实现,就可以把3,4层合并。如果是像Dubbo这种底层支持多种传输层和协议层的框架,就需要完整的4层结构,并且需要好好设计抽象层和流程层,因为框架具体的流转是在这两层,只是涉及到底层时,才会调用具体的第三方实现。








  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现使用的是原始的透明方式…… 一个人的力量太有限了,一个人的才智也太有限了,如果这个小生命在我一个人的手里,也许会因为得不到充足的阳光雨露而不能茁壮成长,但是如果有您的加入,多了您的呵护,相信我们的目标才更有可能实现。 如果您是高手,那么就在这里表现您的聪明才智吧。如果您是菜鸟,来这里汲取知识吧。所有的源代码都永久性公开,如果您有什么地方不清楚或者是有更好的建议,您也可以直接联系我。 ―――――――――――――――――――――――――――――――――― 这是一个应用程序框架,现在已经完成部分框架代码与用户管理、权限管理与日志管理模块。如果您有任何的问题或者是建议可以发邮件到我的邮箱,您可以使用本源代码在您的任何应用之中(包括商业应用)。如果您想要和我们一起来发展壮大这份源代码,请您发邮件给我(Camel_163@163.com),或者是在下面留言。 ――――――――――――――――――――――――――――――――――     uClasses------------------------------在这里定义应用程序中的基础类     uPattern------------------------------几个模式的DELPHI实现或者定义     uAppUtils-----------------------------应用程序工具单元     uAppSet-------------------------------应用程序设置接口声明单元     uAppSetIniFile------------------------应用程序设置IniFile实现单元     uException----------------------------异常统一处理单元     uAppFactory---------------------------应用程序工厂,本工厂生产出来的就是一个一般的应用程序     uAuthAppFactory-----------------------应用程序工厂,本工厂生产出来的就是拥有权限管理、日志及用户管理的程序     ufrmAppBase---------------------------窗口基类     ufrmAppDlgBase------------------------对话框窗口基类    用户、权限与日志管理单元     Role----------------------------------权限与用户管理主要的实现单元     Log-----------------------------------日志管理单元     ufrmRoleManager-----------------------权限管理主用户界面     ufrmLogin-----------------------------用户登录界面     ufrmChangePassword--------------------更改用户密码     ufrmLog-------------------------------日志查看界面     CommandRegister-----------------------模块注册中心
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值