zoukankan      html  css  js  c++  java
  • 面向对象编程6大设计原则

    一、单一职责原则(SRP)

      一个类,只有一个引起它变化的原因。SRP中,把职责定义为“变化的原因”。多个职责耦合在一起,会影响复用性。

      接口一定要做到单一职责,类的设计要尽量做到只有一个原因引起变化。

    二、里氏替换原则(LSP)

      所有引用父类的地方必须能透明地使用其子类对象。

      只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是反过来就不行了,有子类出现的地方,父类未必就能适应。

    三、依赖倒置原则(DIP)

      依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此的独立,不互相影响,实现模块间的松耦合。

      高层模块不应该是依赖低层模块,两者都应该依赖其抽象。抽象不应该依赖细节。细节应该依赖抽象。

      对象依赖关系有三种方式传递:

      (1)构造函数传递依赖对象。  (2)Setter方法传递依赖对象。  (3)接口声明依赖对象。

    四、接口隔离原则(ISP)

      使用多个专门的接口比使用单一的总接口要好。在不违反单一原则的前提下,尽量使用多个专门的接口代替单一的接口。

      一个类对另外一个类的依赖性应当是建立在最小的接口上的。

      但另一方面,接口越多系统将会越复杂,在实际的开发中这并不是一件好事。所以需要点经验把握住这个“度”。

    五、迪米特法则(LOD)

      又叫最少知识原则(LKP),就是说一个对象应该对其它对象尽可能少的了解。也即是平常所说的“不要和陌生说说话”。

      其中门面模式和调停者模式实际上就是迪米特法则的应用(有空再去详细了解下)。

      迪米特法则要求系统的局部设计简化,每一个局部都不会和远距离的对象有直接的关联。但是,这也会造成系统的不同模块之间的通信效率降低,也会使系统的不同模块之间不容易协调。

      迪米特法则在类的设计上的体现:

      (1)优先考虑将一个类设置成不变类。  

      (2)尽量降低一个类的访问权限。

      (3)谨慎使用Serializable。

      (4)尽量降低成员的访问权限。

    六、开闭原则(OCP)

      软件实体应当对扩展开放,对修改关闭。软件系统中包含的各种组件(模块、类、方法)应该在不修改现有代码的基本上引入新的功能。

      开闭原则包括两方法意思:

      "开" : 对于组件功能的扩展是开放的,是允许对其进行功能扩展的。

      "闭" : 对于原有代码的修改是封闭的,即不应该修改原有的代码。

      实现开闭原则的关键就在于“抽象”。作为一个系统的抽象层,要预见所有可能的扩展,从而使增加任何扩展时,系统抽象底层不需要修改。

  • 相关阅读:
    使用 %matplotlib inline 出错?
    RandomForest 调参
    sql中的笛卡尔积
    Sublime text 3 搭建Python3 IDE
    在Windows Python3.5 安装LightGBM
    lodash获取数组或对象的值 at
    lodash 移除数据元素 pull without 删除数组元素
    js 常用类型转换简写
    UTC时间格式转换
    CSS Flexible 布局兼容性以及解决方案
  • 原文地址:https://www.cnblogs.com/zhangchaozheng/p/2571184.html
Copyright © 2011-2022 走看看