关注点分离

关注点分离(Separation of concerns,SOC)是对只与“特定概念、目标”(关注点)相关联的软件组成部分进行“标识、封装和操纵”的能力,即标识、封装和操纵关注点的能力。是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就是处理复杂性的一个原则,一种方法。

案例

1、经典的三层架构,由展现层、业务逻辑层和持久层构成;其中体现了我们对用户界面、业务逻辑和数据持久的关注点分离

2、依赖注入体现了“做什么”和“怎么做”的关注点分离。学过C语言的程序员都知道,这种关注点的分离有着悠久的历史,它表现为.h文件和.c文件,一个规定函数原型,一个规定函数实现。这种关注点分离后来还在面向对象的设计中表现为“针对接口设计”,于是我们在依赖注入的架构方式中,看到了许多的接口,以及接口的不同实现。组件的使用者关注组件做什么,组件的实现者关注组件怎么做。其次,依赖注入体现了对实例生命周期(特别是实例创建)和组件装配的关注点分离。我们可以集中指定对象创建的方式,方便灵活地改变系统的装配方式。通过这样的关注点分离,依赖注入的架构让系统变得更灵活,让组件的实例化和组装方式集中在系统的一个局部来确定,而不是分散在系统各处。

3、

REST是一种Web应用架构风格,它的主要特点包括:

  1. 资源是由URI来指定。
  2. 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
  3. 通过操作资源的表形来操作资源。
  4. 可以通过内容协商机制来取得同一资源的不同物理表现形式,可以是XML、HTML、JSON或其他格式,这取决于请求者是机器还是人,是消费Web服务的客户软件还是Web浏览器。

在REST架构风格中,体现了对资源命名、请求处理和资源物理表现形式的关注点分离。

  1. 由于实现了这些关注点分离,REST有下面这些好处:
  2. 可以利用缓存Cache来提高响应速度。
  3. 通讯本身的无状态性可以让不同服务器处理一系列请求中的不同请求,提高服务器的扩展性。
  4. 浏览器即可作为客户端,简化软件需求。
  5. 相对与其他叠加在HTTP协议之上的机制,REST的软件依赖性更小。
  6. 不需要额外的资源发现机制。
  7. 在软件技术演进中的长期的兼容性更好。

4、AOP(面向方面编程)也是关注点分离思想的一种体现。记日志是说明AOP 思想的一个常用例子。当我们在业务代码中嵌入很多日志代码时,业务代码的可读性就下降了,因为业务逻辑和日志是两个不同的关注点。通过AOP技术来分离这两个关注点,就提高了代码的可读性和可维护性。

草木全
分享到:
共 0 条  此列表为空  当前1/1页

© 2014 究问社区 copyRight 豫ICP备13003319号-1