面向对象的设计原则

  1. UML类图简介
  2. 设计模式的分类
  3. 面向对象的设计原则
  4. python设计模式【1】-单例模式
  5. python设计模式【2】-工厂模式
  6. python设计模式【3】-门面模式
  7. python设计模式【4】-代理模式
  8. python设计模式【5】-观察者模式
  9. python设计模式【6】-命令模式
  10. python设计模式【7】-模板方法模式
  11. python设计模式【8】-模型·视图·控制器-复合模式
  12. python设计模式【9】-状态模式

1. 开放封闭原则

开放/封闭原则规定,类或对象及其方法对于扩展来说,应该是开放的,但是对于修改来说,应该是封闭的。
简单地说,这意味着当你开发软件应用的时候,一定确保以通用的方式来编写类或模块,以便每当需要扩展类或对象行为的时候不必修改类本身。相反,类的简单扩展将有助于建立新的行为。
例如,开放/封闭原则能够在下列情形中表现得淋漓尽致:为了实现所需行为,用户必须通过扩展抽象基类来创建类的实现,而不是通过修改抽象类。
本设计原则的优点如下。

  • 现有的类不会被修改,因此退化的可能性较小
  • 它还有助于保持以前代码的向后兼容性。

2. 控制反转原则

控制反转原则是指,高层级的模块不应该依赖于低层级的模块,它们应该都依赖于抽象。细节应该依赖于抽象,而不是抽象依赖于细节。
该原则建议任何两个模块都不应以紧密方式相互依赖。事实上,基本模块和从属模块应当在它们之间提供一个抽象层来耦合。这个原则还建议,类的细节应该描绘抽象。在某些情况下,这种观念会反转,也就是实现细节本身决定了抽象,这种情况是应该避免的。

控制反转原则的优点如下。

  • 消弱了模块间的紧耦合,因此消除了系统中的复杂性/刚性。
  • 由于在依赖模块之间有一个明确的抽象层(由钩子或参数提供),因此便于通过更好的方式处理模块之间的依赖关系。

3. 接口隔离原则

接口隔离原则规定,客户端不应该依赖于它们不需要使用的接口。接口隔离原则的意思就是,软件开发人员应该仔细地处理接口。例如,它提醒开发员/架构师开发的方法要与特定功能紧密相关。如果存在与接口无关的方法,那么依赖于该接口的类就必须实现它,实际上这是毫无必要的。
例如,一个 Pizza接口不应该提供名为 add_chicken()的方法。基于 Pizza接口的 Veg Pizza类不应该强制实现该方法。
本设计原则的优点如下所示。

  • 它强制开发人员编写“瘦身型”接口,并使方法与接口紧密相关。
  • 防止向接口中随意添加方法。

4. 单一职责原则

单一职责的含义是:类的职责单一,引起类变化的原因单一。这个原则是说,当我们开发类时,它应该为特定的功能服务。如果一个类实现了两个功能,那么最好将它们分开。也就是说,功能才是改变的理由。例如,一个类可以因为所需行为的变化而进行修改,但是如果一个类由于两个因素(基本上是两个功能的改变)而改变,那么该类就应该进行相应的分割。
本设计原则的优点如下所示。

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

5. 替换原则

替换原则规定,派生类必须能够完全取代基类。这个原则很简单,当应用程序开发人员编写派生类时,该原则的含义就是他们应该扩
展基类。此外,它还建议派生类应该尽可能对基类封闭,以至于派生类本身可以替换基类,而无需修改任何代码。

其他设计原则

最少知识原则

最少知识原则指导我们减少对象之间的交互:

1、在设计系统时,对于创建的每个对象,都应该考察与之交互的类的数量,以及交互的方式;

2、遵循这个原则,就能够避免创建许多彼此紧密耦合的类的情况

3、如果类之间存在大量依赖关系,那么系统就会变得难以维护。如果对系统中的任何一部分进行修改,都可能导致系统的其他部分被无意改变,这意味着系统会退化,是应该坚决避免的。

门面模式背后的设计原理就是最少知识原则。

好莱坞原则

好莱坞原则是一种设计原则,即不要给我们打电话,我们会打给你。它来自好莱坞哲学,如果有适合演员的角色,影棚会给演员打电话。

在面向对象的世界中,我们允许低层组件使用好莱坞原则将自己挂入系统中,然而,高层组件确定底层系统的使用方式,以及何时需要它们。换句话说,高层组件对待底层组件的方式也是不要给我们打电话,我们会打电话给你。

这涉及模板方法模式,在这个意义上,它是高级抽象类,它安排定义算法的步骤。根据算法的工作方式,通过调用底层类来定义各个步骤的具体实现。


参考:

《python设计模式》(第2版)https://www.epubit.com/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值