关注点分离
要分解一个系统,首先我们要有关注点,下面给出3个关注点
通过职责划分:
例如我们可以将系统划分为展现层(负责展示),业务层(负责业务处理),数据层(负责数据处理)
通过通用性划分:
可以分为特定应用部分,领域通用部分,技术通用部分,框架属于领域通用部分
通过粒度划分:
可以分为子系统,模块,类
子系统与软件架构
一个复杂的系统:系统由子系统组成,子系统由模块组成,模块由类组成(注:如果子系统足够复杂,那么子系统也是用更下级的子系统组成)
无论是系统,子系统,模块,如果足够复杂,那么他们都应该有架构设计
子系统不同架构不同
例如一个子系统可以使用领域模型模式,而另一个子系统可以使用事物脚本模式
框架与软件架构
概念
框架实现了领域的通用部分,而特定部分留给使用者实现,框架属与系统或子系统的半成品
架构与框架的区别
架构是设计,框架是软件,MVC架构不是MVC框架,MVC框架是基于MVC架构的半成品系统
架构与框架的联系
框架如果足够复杂,同样需要架构,架构某个系统时,也可以应用框架(框架是系统的半成品)
框架技术
框架基于类库(模块)
框架分类(技术角度)
应用框架:如MVC,MFC
中间件框架:
基础设施框架:如EF(ORM框架)
框架扩展点
框架通过提供扩展点,供使用者开发为一个完整的应用
面向对象语言最常使用的是抽象来提供扩展点