zoukankan      html  css  js  c++  java
  • 【我的《冒号课堂》学习笔记】设计原则(4)保变原则

    保变原则

    保变(Protected Variaitions)原则:保变是指受保护的变化。原则内容是找出预计的变化点或不稳定点,分配其职责以便用稳定的接口来包装。

    保变原则和单职原则一直,中心都是职责与变化。不过从名称上就能看出,保变原则的着眼点更倾向变化,而单职原则的着眼点更倾向职责,此外前者侧重解决耦合问题,后者侧重解决内聚问题。封装就是实现PV的一种技巧与手段。PV涵盖的范围很广,可以是任何软件实体,包括模块、组件、子系统乃至系统。封装是在类级别的PV,或者说是数据抽象层的PV。同理,子类型多态是接口级别的PV,或者说是多态抽象层的PV。

    保变原则与经典的开闭原则非常神似,如果非要找出它们之间的区别不可的话,保变原则提倡变中求稳,更侧重可维护性;开闭原则提倡稳中求变,更侧重可重用性。保变原则还暗含了迪米特法则(Law of Demeter,简称LoD),又称最少知识原则(Least Knowledge Principle,简称LKP)。具体应用到方法调用上,它要求一个对象的方法只能调用以下对象:该对象本身,即this(或self);该方法的参数;该方法内部创建的对象;该对象的直接组成对象,包括其属性及属性中的元素。

    GRASP(General Responsibility Assignment Software Patterns/Principle),即通用职责分配原则。合理的系统应保证每个模块各司其职、各尽其责,既不尸位素餐,也不越俎代庖。但具体如何分配职责更合理呢?GRASP给出了一套参考答案。

    信息专家原则可简单地归结为:知情者为负责者,既谁拥有完成职责所需的全部信息,谁就该负责。知情者太多是设计可能有缺陷的征兆。如果确实无法免除,就选与职责关联度最大的那位知情者。知情者具备了承担职责的基本能力,于相关信息也有一定的内在联系,让它来负责既是可能的,也是合理的。这样可令系统的整体功能比较均匀地分散于各个类之中。每当变化来临,由于职责分工明确而公平,相关的承担者容易被识破并且范围有限,同时职责分量也不会太大,因而系统较易维护。

    信息专家原则有一定的合理性,但它多少还是会增加系统的耦合。当增加的耦合明显阻碍了系统的可维护性或可重用性,就须要求纯虚构原则了。比如,创建者原则建议:创建一个类的实例的职责应分配给那些包含、聚合、记录或密切使用该类的类,或者拥有该类初始化数据的类。这个原则非常自然,算得上是信息专家原则的一个推理,但同时也在两个类之间建立了强耦合。因此,可以专门设计一个工厂类,接管创建对象的职责——这便是著名的工厂模式。该工厂类无疑符合纯虚构原则,因为工厂原本是不存在的。

    SOLID,它们是5个OOD原则的首字母缩写,都是熟面孔了,不用再加介绍。

    SOLID是类级别的设计原则,而这个是包级别的设计原则。此处是的包指的是一组相关的类组成的颗粒度更大的模块。

    总结:

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
    云原生时代,2个方案轻松加速百万级镜像
    Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
  • 原文地址:https://www.cnblogs.com/guihuo/p/5651856.html
Copyright © 2011-2022 走看看