python设计模式简单了解

面向对象

理解面向对象编程

  • 封装

    • 对象的行为外部世界是不可见的,或者说对象的状态信息是私密的
    • 客户端不能通过直接操作改变对象的内部状态。相反,客户端需要发送消息请求对象来改变内部状态,对象可以通过特定的请求类型,通过特定的成员函数(set或者get)来改变他们的内部状态,以做出相应的响应。
    • Python封装(数据和方法的隐藏)的概念不是隐式的。__是一种防君子不防小人的使其可访问性变为私有的行为
  • 继承

    • 继承表示一个类可以继承父类的(大部分)功能
    • 继承被描述为一个重用基类中定义的功能并允许对原始软件的实现独立拓展的选项
    • 继承可以利用不同类的对象之间的关系建立层次结构,Python支持多继承。
  • 多态

    • 多态有两种类型。
      • 对象根据输入参数提供方法的不同实现
      • 不同类型的对象可以使用相同的接口
  • 抽象

    • 它提供了一个简单的客户端接口,客户端可以通过该接口和类的对象进行交互,并可以调用该接口中定义的各个方法。
    • 它将内部类的复杂性抽象为一个接口,这样客户端就不知道内部怎么实现
  • 组合

    • 组合是一种将对象或类组合成更复杂的数据结构或软件实现的方法
    • 在组合中,一个对象可调用其他模块的成员函数,这样一来,无需通过继承就可以实现基本功能的跨模块使用

面向对象的设计原则

  • 开放/封闭原则

    类或对象及其方法对于扩展来说,是开放的,但是对于修改来说,应该是封闭的。

    • 现有的类不会被修改,因而退化的可能性较小
    • 有助于保持以前代码的向后兼容性
  • 控制反转原则

    高层级的模块不应依赖于低层次的模块,它们应该都依赖于抽象。细节应该依赖于抽象,而不是抽象依赖于细节

    • 削弱了模块之间的紧耦合,因而消除了系统中的复杂性/刚性
    • 由于依赖模块之间存在一个明显的抽象层(由钩子或参数提供),因而便于通过更好的方式处理模块之间的依赖关系
  • 接口隔离原则

    客户端不应该依赖于它们不需要的借口

    • 它强制开发人员编写瘦身型接口,并使方法与接口紧密相关
    • 防止向接口中随意添加方法
  • 单一职责原则

    类的职责单一,引起类变化的原因单一

    • 每当一个功能发生变化时,除了特定的类需要改变外,其他类无需变动
    • 此外,如果一个类有多个功能,那么依赖它的类必定会由于多种原因而经历多次修改,这是应该避免的
  • 替换原则

    派生类必须能够完全取代基类

设计模式的概念

设计模式就是解决特定问题的解决方案。

  • 它们是与语言无关的,可以用多种语言实现
  • 它们是动态的,随时会有新的模式引入
  • 它们可以进行定制,对开发人员很有用

设计模式的优点

  • 它们可以再多个项目中重复使用
  • 问题可以在架构级别得到解决
  • 它们都经过了时间的验证和良好的证明,是开发人员和架构师的宝贵经验
  • 它们具有可靠性和依赖性

设计模式的分类

  • 代码段:用某种语言编写的一段具有特定用途的代码,例如,它们可以是python的DB连接代码

  • 设计:用来解决某个特定问题的优秀的解决方案

  • 标准:这是一个解决某类问题的方法,它非常通用,并且适用于当前的情况

  • 模式:这是一个经过时间考验的、高效、可扩展的解决方案,能够解决一类已知问题

上下文-设计模式的适用性

  • 参与者:它们是在设计模式中用到的类,类可以在模式中扮演不同的角色,已完成多个目标
  • 非功能需求:诸如内存优化,可用性和性能等需求都属于此类型。由于这些因素影响整个软件解决方案,因此至关重要。
  • 权衡:并非所有的设计模式都适用于应用程序开发,因此需要权衡,这些是在应用程序中使用设计模式时需要所做的决策。
  • 结果:如果上下文不合适,设计模式可能对代码的其他部分产生负面的影响,开发人员应该了解设计模式的 结果和用途。

模式的分类

  • 创建型模式(单例模式是创建型模式的一种)
    • 它们的运行机制基于对象的创建方式
    • 它们将对象创建的细节隔离开来
    • 代码与所创建的对象的

你可能感兴趣的:(设计模式,设计模式,python)