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

根据抽象划分层次

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

    按抽象分层

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

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

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

    分层的重点

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

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

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

    装饰器模式

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

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

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

    接口和实现

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

    总结

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

    相关文章

      网友评论

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

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