里氏替换原则:函数传父类对象(User)也必定可以穿子类对象(Vip)【vip继承与User】

class User:def show_name(self):passclass VIPUser(User):def show_name(self):passu = User()
def show_user(u):res = u.show_name()

高层模块不应该依赖底层模块,【说半天就一句话,依赖接口编程!!】

https://blog.csdn.net/zhengzhb/article/details/7289269?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163809045916780264060299%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163809045916780264060299&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-2-7289269.first_rank_v2_pc_rank_v29&utm_term=%E4%BE%9D%E8%B5%96%E5%80%92%E7%BD%AE%E5%8E%9F%E5%88%99&spm=1018.2226.3001.4187


老虎类继承了动物类,然而却被迫实现他不该有的行文。因此就有了接口隔离原则。

#一个类如果有抽象方法,就属于抽象类
from abc import ABCMeta, abstractmethodclass Animal(metaclass = ABCMeta):@abstractmethoddef walk(self):pass@abstractmethoddef swim(self):pass@abstractmethoddef fly(self):passclass Tiger(Animal):def walk(self):print("老虎走路")#被迫实现自己没有的功能???
t = Tiger()

TypeError: Can’t instantiate abstract class Tiger with abstract methods fly, swim
遵循接口隔离原则:使用多个专门接口
青蛙多继承,陆地,水上。
天鹅多继承,陆地,水上,天空。

# -*- encoding: utf-8 -*-
"""
@File    : interface.py
@Time    : 2021-10-20 10:20
@Author  : XD
@Email   : gudianpai@qq.com
@Software: PyCharm
"""
#一个类如果有抽象方法,就属于抽象类
from abc import ABCMeta, abstractmethodclass LandAnimal(metaclass = ABCMeta):@abstractmethoddef walk(self):passclass SkyAnimal(metaclass = ABCMeta):@abstractmethoddef fly(self):passclass WaterAnimal(metaclass = ABCMeta):@abstractmethoddef swim(self):passclass Tiger(LandAnimal):def walk(self):print("老虎走路")class Frog(LandAnimal, WaterAnimal):def walk(self):passdef swim(self):passf = Frog()

这三种模式都是为了把一句话变成很多代码
创建型模式:作用于对象的创建,将对象的创建与使用分离
结构性模式:将类或对象按某种布局组成更大的结构
行为型模式:作用于类或对象之间相互协作共同完成单个对象无法单独完成的任务

设计模式:001面向对象设计原则相关推荐

  1. 代码质量评判标准、设计模式、面向对象设计原则速查表

    文章目录 代码质量评判标准 软件腐化的原因 提高系统可复用性的几点原则 可维护性与可复用性并不完全一致 面向对象设计原则 1. 面向对象设计的六大设计原则表 2. 图解面向对象涉及的六大原则 1. 开 ...

  2. 设计模式之面向对象设计原则

    单一职责模式 一个对象应该包含单一的职责,并且该职责被完整地封装在一个类中: 最简单的面向对象设计原则,它用于控制类的粒度大小: 单一职责原则是实现高内聚,低耦合的指导方针.它是最简单但又最难运用的原 ...

  3. C++设计模式(李建忠主讲) 2.面向对象设计原则

    C++设计模式 2.面向对象设计原则 重新认识面向对象 面向对象设计原则 依赖倒置原则(DIP) 开放封闭原则(OCP) 单一职责原则(SRP) Liskov替换原则(LSP) 接口隔离原则(ISP) ...

  4. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  5. 设计模式-合成复用原则-》面向对象设计原则

    合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍. 合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚 ...

  6. 《设计模式:可复用面向对象软件的基础》——面向对象设计原则、创建型模式(笔记)

    文章目录 二.面向对象设计原则(补充) 2.1 重新认识面向对象 2.2 面向对象设计原则 2.2.1 依赖倒置原则(DIP) 2.2.2 开放封闭原则(OCP) 2.2.3 单一职责原则(SRP) ...

  7. 实例图解设计模式之面向对象设计七大原则

    文章目录 面向对象设计原则详解 面向对象设计原则概述 常用的面向对象设计原则 单一职责原则(Single Responsibility Principe)SRP ★★★★☆ 开闭原则(Open-Clo ...

  8. 设计模式(三)——面向对象设计原则

    设计模式需要遵循基本的软件设计原则.可维护性(Maintainability)和可复用性(Reusability)是衡量软件质量的重要的两个属性: 可维护性:软件能够被理解.改正.适应及扩展的难易程度 ...

  9. 面向对象设计原则与23种设计模式

    面向对象概述 1.万物皆对象(Java反射原理-都是借助java.lang.class这个对象的属性.定义等实现) 2.面向对象的特征:封装(对象之间的隔离性.对象内部的属性封装).继承(类的重用,耦 ...

最新文章

  1. 计算机视觉编程——图像聚类
  2. vim-plug 插件安装
  3. ElasticSearch 性能优化实战,让你的 ES 飞起来!
  4. 一步步编写操作系统 65 标准调用约定stdcall 汇编实战
  5. 实时内核(Core)和实时操作系统(RTOS)有何不同?
  6. 服务器里怎么更改网站图片大小,php实现在服务器端调整图片大小的方法
  7. 人工智能(6)---AI知识体系图及其产业链全景图
  8. Win Phone 8 Emulator启动错误:提示无法创建虚拟机,Xde找不到主机的IPv4地址
  9. C语言-简谱转换成哨笛指谱
  10. JAVA----Quartz SimpleTrigger和CronTrigger 触发器
  11. 三个非负整数 马蹄集
  12. Pigsty:开箱即用的数据库发行版
  13. python导入excel加入折线图_excel表格中怎么设计炫酷折线图
  14. 屌炸天的3D引擎OpenCASCADE的用法及案例
  15. 使用七牛云存储图片案例
  16. 如何离线加载全国2.48TB天地图
  17. BJ模拟 Different Trips【树上后缀数组】
  18. 基于深度学习的新闻摘要生成算法实现与详解(Encoder-Decoder框架模型)
  19. ESModule中载入commjs
  20. Android 性能优化(一) —— 启动优化提升60%

热门文章

  1. C案例:打印斐波拉契数列
  2. 【BZOJ3050】Seating,线段树
  3. 合成迪丽热巴下海_热巴生图颜值回春,被韩媒吹上天,她是找了杨幂的医生?...
  4. 2017.9.29 数三角形 思考记录
  5. 2017.6.5 YY的GCD 失败总结
  6. 2017.3.30 时态同步 失败总结
  7. 2016年3月-7月电机组装以及基于MAXON运动控制系统
  8. SPH(光滑粒子流体动力学)流体模拟实现二:SPH算法(4)-算法实现2
  9. Android:进度条加载
  10. Unreal Engine 4 —— Ghost Mesh Plugin的开发日志