zoukankan      html  css  js  c++  java
  • 大话设计模式读书笔记--6个原则

    单一职责原则

    定义:

    就一个类而言,应该仅有一个引起它变化的原因

    如果你能想到多余一个的动机去改变一个类,那么这个类就具有对于一个的职责,就应该考虑类的职责分离

    职责过多的坏处

    如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其它职责的变化,这些耦合会导致脆弱的设计,当发生变化时,设计会遭受意想不到的破坏

    开发中

    软件设计的重要部分,就是发现职责,并把职责相互分离

    开放封闭原则

    定义:

    软件实体(类,函数,模块等),应该可以扩展,但是不可以修改

    面对需求的变化,对程序的改动是通过增加新代码,而不是修改现有代码

    何时应对变化

    在编写代码时,假设变化不会发生,或者猜测可能发生的变化种类,当然猜测很难,因此当发生小变化时,想办法应对更大的变化,有变化立刻采取行动,创建抽象隔离以后发生的同类变化,达到可维护,可扩展,可复用的目的

    依赖倒转原则

    定义:

    1.高层模块不应该依赖于低层模块,两者都依赖于抽象
    
    2.抽象不应该依赖于细节,细节应该依赖于抽象

    针对接口编程,不应该针对实现编程

    例如: web开发中,业务层(高层)调用dao层(低层)访问数据库

    里氏代换原则

    定义:

    子类型必须能够替换掉它们的父类型

    在程序中,把父类型全部替换成子类型,程序的行为没有变化时,父类才能真正的被复用,而子类也能在父类的基础上增加新的行文

    例如

    生物学中,企鹅是鸟类,但是程序设计中,子类拥有父类所有非private的属性和行为,企鹅不能当做鸟类的子类,因为企鹅不能飞,

    合成复用原则

    定义:

    在一个对象中通过关联关系,包括组合和聚合关系,来使用一些已有的对象,使之成为新对象的一部分,从而扩展新功能

    推荐多使用关联关系,以减少类继承的复杂度

    合成

    强拥有关系,A对象包含B对象,B对象包含A对象,他们的生命周期时一样的,比如大雁和它的翅膀

    聚合

    弱拥有关系,A对象可以包含B对象,B对象不包含A对象,比如企鹅需要知道气候的变化

    迪米特法则

    定义:

    如果两个类不必直接通信,那么这两个类就不应该发生直接的相互作用,如果一个类需要调用另一个类的方法时,可以通过第三者转发这个调用

    强调类之间的耦合,类应当尽量降低成员的的访问权限,信息的隐藏促进了软件的复用

    例如

    小李第一天去公司上班, 需要找it部门的人安装电脑, 小李找人事, 人事给it部门的小王, 小王很忙没时间,人事又找到小赵, 最后是小赵帮忙安装电脑

    由于it部门是抽象的,小李不需要认识it部门的人靠关系获得帮忙,即使it部门的员工换了也没事,小李只需通过人事转发就行了

  • 相关阅读:
    vuesocket.io在单文件中使用(进入到单文件再发请求)
    el-tree设置默认展开及选中
    Vue项目中解决跨域问题
    echarts堆叠条形图计算总数()
    原生js实现点击目标区域外侧触发事件
    js构造树形菜单
    wangEditor服务器上传图片(Vue使用)
    webpack(6) 打包多页应用和sourcemap 使用
    NoSql相关
    Markdown
  • 原文地址:https://www.cnblogs.com/liuconglin/p/6551020.html
Copyright © 2011-2022 走看看