设计模式与架构设计

论设计模式在架构设计中的运用

 

 

 

·        设计模式

      在我们现实的软件项目开发中,常常会遇到一次又一次的关于软件设计上的问题,而设计模式就针对那些问题提供了一系列的解决方案。设计模式是一种较高层次程序结构的设计策略、是一种技巧,它着重于为软件系统/子系统内部的各对象间提供一个良好的通信平台,协调各者之间的关系,使各对象的分工清晰、关系明显,并提高软件系统的重用性、可维护性。

 

      经典的设计模式共有23种,一般可分为三种类型;创建模式、结构模式、行为模型。

创建模式:如单件模式(Singleton

      单件模式使特定的对象在系统中全局且存在唯一的一个实例,适用于变化较少但会经常使用的对象,如用来保存配置信息的对象,如下图:

 

https://p-blog.csdn.net/images/p_blog_csdn_net/kyo1209/EntryImages/20081108/a1633617749561320000.jpg

 

结构模式:如外观模式(Facade

      外观模式为其它子系统或外部软件系统,提供了访问特定子系统内各对象的唯一入口,,外观模式也可称为一业务方法的包装,适用于外部系统为了实现某一业务操作,需要同时访问特定子系统内的多个对象的情况,如下图:

 

https://p-blog.csdn.net/images/p_blog_csdn_net/kyo1209/EntryImages/20081108/a2633617749561476250.jpg

 

行为模式:如模版模式(Template

      模版模式固定了特定对象的行为/操作形式,适用于当某方法的操作/调用形式相对稳定,而实现方式可变的情况下使用,如下图:

 

 https://p-blog.csdn.net/images/p_blog_csdn_net/kyo1209/EntryImages/20081108/a3633617749561945000.jpg

 

·        架构设计

      软件的架构就是软件系统中高层次的结构,而架构设计则是在这高层次结构上,把软件系统从整体到部分的高层次划分的设计策略。软件架构的好坏可以影响到总体布局和框架性结构,它可以分为纵向架构(按技术角度划分)和横向架构(按业务角度划分)。

 

纵向架构:

      从技术角度可将软件系统划分为不同的层(引用Layer模式),如:界面层、业务层、数据层、基础/公用方法层,系统层等等。

模向架构:

      从业务角度可将软件系统划分为不同的业务模块/子系统,如在CRM系统中,有客户资源管理模块、销售过程模块、销售费用管理模块等等。

 

      架构设计当中存在着多种的模式,称之为架构模式,如上面提到的Layer模式,它把软件系统逻辑地划分为不同的层,层与层之间是有序依赖的,各层的变化一般都能很好的层限于这一层而不影响其它的层,层与层间的调用/依赖关系如下图:

 

https://p-blog.csdn.net/images/p_blog_csdn_net/kyo1209/EntryImages/20081108/a4633617749562257500.jpg 

 

      利用软件细化架构设计中的5视图方法,软件的架构还可以分为:

1)逻辑架构(逻辑视图),如上面提到的Layer模式把系统逻辑地划分为不同的层。

2)物理架构(物理视图),如软件系统是如何分布部署在不同的服务器上。

 

·        架构设计与设计模式

如上所述,架构设计是一种高层次的系统结构的设计,而设计模式则是一种中层次的系统结构的设计策略,它用于支持架构设计。而架构设计当中又分为概念架构设计和细化架构设计,在细化架构设计里提到的5视图方法,其中的逻辑视图与设计模式息息相关。

利用逻辑视图方法,结合Layer架构模式把软件系统划分为不同的层,随后在各层里可以结合使用不同的设计模式,同时设计模式也可以穿插在不同的层之间运用。如下图(界面层利用模版模式固定了各个页面的某些方法的调用行为;而界面层通过外观模式访问业务层中相应的业务方法;数据层中则利用了单件模式把XML配置信息存放在一个全局的唯一实例里面):

 

https://p-blog.csdn.net/images/p_blog_csdn_net/kyo1209/EntryImages/20081108/aaaa633617749562570000.jpg

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值