产品小王|从面向方面看软件设计( 三 )

以上两种实现逻辑都不是非常合理的,原因如下:

  • 第一种逻辑的问题是会导致验证操作和记录操作绑定在一起,不但造成代码冗余而且会固化代码,降低代码的灵活性;
  • 第二种逻辑的问题是将代码分散操作,会导致后续修改需求时无法快速定位对应的代码,同时也会固化代码,降低代码的灵活性;
其实不难看出,账号密码验证及操作是属于横切关注点,可以使用面向方面编程实现,具体如下:
  • 切入点:查看敏感数据或者进行敏感操作;
  • 切入点程序:进行账号密码验证操作;
  • 连接点程序:记录操作的相关信息等;
代码结构如下图所示:
产品小王|从面向方面看软件设计
文章插图
敏感操作的面向方面编程结构图
从上例中可以看到,面向方面编程的优点是代码冗余少且灵活;但是在一定程度上增加了代码的复杂度,可能会出现无法预知的问题。
面向方面编程并没有大范围使用,从这个意义上来说,面向方面编程对编写代码的意义不大,面向方面编程更多的意义在于系统架构;通过面向方面思想设计的架构能有更强的灵活性和更少的冗余,这也是个人了解完面向方面后的最大感受。
作者:宝宝心里苦啊;公众号:宝宝心里苦啊
本文由 @宝宝心里苦啊 原创发布于人人都是产品经理,未经作者许可,禁止转载。
产品小王|从面向方面看软件设计】题图来自Unsplash,基于CC0协议。