美文网首页
根据抽象划分层次

根据抽象划分层次

作者: 全新的饭 | 来源:发表于2022-05-07 09:50 被阅读0次

按抽象分层

软件系统由若干层组成,高层执行任务时需要借助底层提供的功能。

对一个系统分层的依据是什么?不同的抽象。
每个层应属于不同的抽象,层与层之间调用方法时,应会改变抽象。(好的设计)

如果层与层之间的抽象的区别不够大,说明太“浅”了:这意味着在增加了复杂度(加抽象层就是在增加复杂度)的前提下,却没有获得足够明显的好处(分层后应减少上层使用者对该系统的复杂度的认知)

分层的重点

让新增的每个方法都有它自己的(不会被其他方法替代)的职能。

正确使用接口复制(不同的方法具有同样的签名)的时机

  1. 各“相同”的接口提供了自己的功能:并非完全的一致。
  2. 多个方法实现同一接口可减少认知负荷,这些方法通常属于同一抽象层,相互之间不调用(为替代关系)。

装饰器模式

将一个已有的Obj包起来,扩展其功能(提供几乎一致的API,调用被包起来的Obj的对应方法)
在创建装饰器类前应思考是否真的有必要创建它:

  1. 能不能把新功能直接添加到原始类中(因为不够特殊)
  2. 能不能把新功能直接添加到用例中(因为足够特殊)

不要有太多层的装饰器:这很可能意味着层太浅了。

接口和实现

接口和实现的区别应足够大(表现为数据结构、表达方式等),这说明二者的抽象层次的差别足够大。

总结

在编程中引入任何元素(接口、参数、方法、类……)都会增加复杂度(有代价),因此在引入任何元素时都要思考:我引入它后能消除哪些复杂度(如通过封装隐藏了一些复杂度)。

相关文章

网友评论

      本文标题:根据抽象划分层次

      本文链接:https://www.haomeiwen.com/subject/oviturtx.html