暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python 面向对象设计模式概述篇-设计模式简介

小儿来一壶枸杞酒泡茶 2021-03-24
387

快学快用设计模式

什么时候设计模式?

我所理解的设计模式其实拆解开字面意思就是都某种模式进行设计,应用到我们的应用软件开发中。那为啥需要设计模式呐?

在面向对象编程的概念,我们了解到面向对象的几个特性:封装,继承,多态,如何把这些更加发挥好这些特性,并融会贯通应用到我们的软件设计上,这就是需要经过大量实践累积成一定的模板,高度的进行封装。

所以我可以理解所谓的设计模式就是为了更好的表达和更好重用代码而提出一种设计软件的解决方案。

面对对象设计的原则是什么?

之前系列的解说面向对象编程中一直没有说起这个原则,主要是为了后续引出设计模式做铺垫。

那所谓的面向对象设计原则主要有(术语版):

  • 单一职责原则:

    定义:一个合理的类,应该仅有一个引起它变化的原因,即单一职责,就是设计的这个类功能应该只有一个。

    优点:优点:消除耦合,减小因需求变化引起代码僵化。

  • 开-闭原则:

    定义:设计要对扩展有好的支持,而对修改要严格限制。即对扩展开放,对修改封闭。

    优点:降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软件系统需要增加新的功能时,不需要对作为系统基础的抽象层进行修改,只需要在原有基础上附加新的模块就能实现所需要添加的功能。增加的新模块对原有的模块完全没有影响或影响很小,这样就无须为原有模块进行重新测试。

  • 里氏代换(替换原则)原则:

    定义:规则是“子类必须能够替换基类,否则不应当设计为其子类。”

    也就是说,一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

  • 优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。

  • (控制反转原则)依赖倒换原则:

    定义:要针对接口编程,不要针对实现编程,高层级模块不应该依赖于低层级模块。中间应该提供抽象层耦合。

    优点:面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能

  • 接口隔离原则

    定义:“将大的接口打散成多个小接口”,让系统解耦,从而容易重构,更改和重新部署。

    优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。

  • 迪米特法则或最少知识原则

    定义:一个对象应当尽可能少的去了解其他对象

    优点:消除耦合。




设计模式三大分类

  • 创建型模式:提供实例化的方法,为适合的状况提供相应的对象创建方法。

    特性:

     - 1:基于对象的创建
    - 2:对创建对象细节隔离
    - 3:和创建对象的类型无关

  • 结构型模式:处理实体之间的关系,使得这些实体能够更好地协同工作

    特性:

     - 1:设计过程注重通过组合获得更强大功能的对象和类的结构
    - 2:简化结构并识别类和对象之间的关系
    - 3:主要关注类的继承和组合

  • 行为型模式:用于在不同的实体建进行通信,为实体之间的通信提供更容易,更灵活的通信方法。

    特性:

     - 1:关注对象之间的交互和对象的响应
    - 2:对象的交互过程中能保持松散耦合


分类明细

资料参考来源

https://blog.csdn.net/qq_36986067/article/details/89165537

个人其他博客地址

简书:https://www.jianshu.com/u/d6960089b087

掘金:https://juejin.cn/user/2963939079225608

小钟同学 | 文 【原创】| QQ:308711822

  • 1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。
  • 2:关于文章内容,有部分内容参考自互联网,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。


文章转载自小儿来一壶枸杞酒泡茶,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论