美文网首页
设计模式(一)设计原则

设计模式(一)设计原则

作者: 天色将变 | 来源:发表于2019-06-23 10:58 被阅读0次
让变化的与不变的分开。
  • 定义:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
  • 优势:把会变化的部分取出并“封装”起来,好让其他部分不会收到影响。
针对接口编程
  • 定义:针对接口编程,而不是针对实现编程。
  • 解释:其实就是多态,父类的引用指向子类的对象。针对接口或父类编程。
多用组合,少用继承
  • 定义:多用组合,少用继承
  • 解释:使用组合建立系统具有很大的弹性,不仅可将算法族封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可。
松耦合
  • 定义:为了交互对象之间的松耦合设计而努力
  • 解释:松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的互相依赖降到了最低。
开放关闭原则
  • 定义:类应该对扩展开发,对修改关闭
  • 解释:我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为。如能实现这样的目标,有什么好处呢?这样的设计具有弹性,可以应对变化,可以接受新的功能来应对改变的需求。但是并不是所有的代码都要遵循该原则,你需要把注意力集中在设计中最有可能改变的地方,然后应用该原则
依赖倒置原则
  • 定义:要依赖抽象,不要依赖具体类。
  • 解释:不能让高层组件依赖低层组件,而且,不管高层组件或低层组件,都应该依赖于抽象。高层组件依赖于抽象类A,A的子类依赖于A。
最少知识原则
  • 定义:只和你的密友谈话。
  • 解释:在设计系统时,不要让太多的类耦合在一起,免得修改系统中的一部分,会影响到其他部分。如果许多类之间相互依赖,那么这个系统就会变成一个易碎的系统,它需要花许多成本维护,也会因为太复杂而不容易被其他人了解。
好莱坞原则
  • 定义:别调用我们,我们会调用你
  • 解释:低层组件绝对不能直接调用高层组件,但是低层组件可以参与计算,但是是由高层组件控制何时以及如何让低层组件参与。
  • 与依赖倒置原则的区别:依赖倒置原则教我们尽量避免使用具体类,而多使用抽象。而好莱坞原则是用在创建框架或组件上的一种技巧,好让低层组件能够被挂钩进计算中,而且又不会让高层组件依赖低层组件。两者的目标都是在于解耦,但是依赖倒置原则更加注重如何在设计中避免依赖。好莱坞原则教我们一个技巧,创建一个又弹性的设计,允许低层结构能够互相操作,而又防止其他类太过依赖它们。

相关文章

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 聊聊设计模式原则(三) -- 依赖倒置原则

    目录 聊聊设计模式原则(一) -- 单一职责原则 聊聊设计模式原则(二) -- 接口隔离原则 聊聊设计模式原则(三...

  • 聊聊设计模式原则(二) -- 接口隔离原则

    目录 聊聊设计模式原则(一) -- 单一职责原则 聊聊设计模式原则(二) -- 接口隔离原则 聊聊设计模式原则(三...

  • 聊聊设计模式原则(一) -- 单一职责原则

    目录 聊聊设计模式原则(一) -- 单一职责原则 聊聊设计模式原则(二) -- 接口隔离原则 聊聊设计模式原则(三...

  • 设计模式

    设计模式六大原则[设计模式六大原则(1):单一职责原则][设计模式六大原则(2):里氏替换原则][设计模式六大原则...

  • Meterial design与Ant design规范对比分析

    价值观及目标 设计原则 设计原则-布局 设计原则—导航 设计原则—视觉(颜色) 设计原则—交互模式 设计原则—动效...

  • 深入理解设计模式的设计原则

    设计原则 设计原则,是设计模式的内功心法,基本所有的设计模式都是基于设计原则进行的具体化,如果说设计模式是如何操作...

  • 设计模式开篇

    设计模式与原则 设计模式原则是为了提高代码的可维护性,可复用性和可扩展性,设计模式是设计模式原则的具体体现。 设计...

  • iOS面试之设计模式模块

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 单一职责原则 ...

  • 设计模式

    1 软件设计原则和设计模式概览 1.1 面向对象设计原则 1.2 GOF设计模式 1.3 C嵌入式编程设计模式 ...

网友评论

      本文标题:设计模式(一)设计原则

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