当前位置: 首页 > news >正文

面向对象的设计原则

设计模式 Python

设计模式:对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计

面向对象

三大特性:封装、继承、多态

接口:若干抽象方法的集合

作用:限制实现接口的类必须按照接口给定的调用方式实现这些方法;对高层模块隐藏了类的内部实现

接口:

第一种:

d817b2fb742e365b72a4b20898f9372

接口其实也是一种特殊的类,如果一个类中有抽象方法那就是一个抽象类

第二种:

·image-20230824235634563

这个类抽象类就是接口,继承这个抽象类的类必须实现抽象类的抽象方法,接口只定义方法,不管实现

AliPay类继承了Payment类,但是由于Payment是一个接口,我们一般叫做,AliPay实现了Payment接口

面向对象设计SOLID原则

开放封闭原则

一个软件实体、模块和函数应该对拓展开放,对修改关闭。即软件实体尽量不修改原有代码的情况下进行拓展

里氏替换原则

所有引用父类的地方必须能透明地使用其子类的对象

image-20230825001141876

依赖倒置原则

高层模块不应该依赖低层模块二者都应该依赖其抽象:抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程而不是针对实现编程。

接口隔离原则

使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

接口: 单一的总接口

image-20230825001820917

实现:

image-20230825001917805

老虎不需要游泳和飞的方法,但是又必须实现抽象类的所有方法,这就是接口隔离原则的不要使用单一的总接口,使用多个专门的接口,我们可以把接口拆开

多个接口:

image-20230825002058486

实现:

image-20230825002146628

单一职责原则

不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。

相关文章:

面向对象的设计原则

设计模式 Python 设计模式:对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计 面向对象 三大特性:封装、继承、多态 …...

前端需要理解的工程化知识

1 Git 1.1 Git 常见工作流程 Git 有4个区域:工作区(workspace)、index(暂存区)、repository(本地仓库)和remote(远程仓库),而工作区就是指对文件发生更改的地方&#xff…...

【Terraform学习】使用 Terraform创建DynamoDB添加项目(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...

基于单片机教室人数实时检测系统

一、系统方案 主程序中main函数主要是引脚的初始化,给单片机引脚初始化,初始化LCD1602,初始化红外对管,通过对LCD1602赋值,采集进入教室的人数,显示在LCD1602上面进出人数我们采用按键的形式,检…...

alibabacloud的简单使用,nacos配置中心+服务中心。作者直接给自己写的源码

文章目录 依赖关键主要的程序启动文件配置文件bootstrap.yml依赖文件nacos配置中心上的文件截图 启动成功截图参考文档 依赖关键 SpringBoot版本和com.alibaba.cloud版本需要对应,不然会程序会启动失败作者使用的版本 SpringBoot: 2.1.6.RELEASE alibabacloud: 2.…...

Python爬虫:一个爬取豆瓣电影人像的小案例

从谷歌浏览器的开发工具进入 选择图片右键点击检查 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b38c2a942c441fb8cb545a28bb35015.png 翻页之后发现网址变化的只有start数值,每次变化值为30 Python代码 import requests from bs4 import BeautifulSou…...

STM32CubeMX配置STM32G0 Standby模式停止IWDG(HAL库开发)

1.打开STM32CubeMX选择好对应的芯片,打开IWDG 2.打开串口1进行调试 3.配置好时钟 4.写好项目名称,选好开发环境,最后获取代码。 5.打开工程,点击魔术棒,勾选Use Micro LIB 6.修改main.c #include "main.h"…...

39.RESTful案例

RESTful案例 准备环境 Employee.java public class Employee {private Integer id;private String lastName;private String email;//1 male, 0 femaleprivate Integer gender; } //省略get、set和构造方法EmployeeDao.java package com.atguigu.SpringMVC.dao;import com.…...

Power Pivot 实现数据建模

一、简介 Excel中的透视表适合小规模数据;如果想在稍微大一些的数据中进行高性能透视表分析,就要使用Power Pivot;再大一些数据,可能就需要大数据分析服务来进行分析。 Power Pivot,可以让没有技术背景的企业业务人员…...

Ansible自动化运维之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…...

Docker - Docker安装MySql并启动

因为项目需要连接数据库,但是远程服务器上的mysql我不知道账户和密码,这个时候便是docker发挥作用的关键时刻了! 目录 docker安装安装gcc卸载老docker(如有)安装软件包设置镜像仓库更新yum软件包索引安装docker启动doc…...

SQL Server 2019导入txt数据

1、选择导入数据 2、选择Flat file Source 选择文件,如果第一行不是列名,就不勾选。 3、下一步 可以看看数据是否是对的 4、下一步 选择SQL server Native Client 11,数据库选择导入进的库 输入连接数据库的名字和要导入的数据库 下一…...

科研 | Zotero导入无PDF的参考文献、书籍

最近在用Zotero在Word中插入参考文献的时候发现,有些没在网上找到对应的PDF版本,但也不是必须要PDF版本的参考文献或者参考书籍,如何才能不影响正常的文献排版 主要是先在网上找到对应文献,书籍,网页等的ISBN&#xf…...

【Docker】docker入门之dockerfile编写

文章目录 前言一、docker是什么?docker介绍docker指令 二、docker有什么用?三、docker怎么用?FROMMAINTAINERRUNENVWORKDIRCOPY、ADDUSEREXPOSE实例 四、docker注意事项docker容器中使用某些宿主机设备时需要额外的权限docker容器中文件内容中…...

javaee之黑马乐优商城1

问题1:整体的项目架构与技术选型 技术选型 开发环境 域名测试 如何把项目起来,以及每一个目录结构大概是什么样子 通过webpack去启动了有个项目,这里还是热部署,文件改动,内容就会改动 Dev这个命令会生成一个本地循环…...

滴滴前端一面面经(已挂)

面试过程 前段时间面试了滴滴的前端实习岗位,大厂的面试机会很难得,复习了很多前端知识。 拿到面试机会,是在地铁上投递了boss,当时hr看了我的简历就和我约了第二天的面试。电脑也没带,晚上就用手机复习了前端的一些…...

靠谱的适合上班族做的副业,这几种一定要试试!

作为上班族,我们的时间常常被工作和日常生活所占据,很少有机会去追求自己的兴趣和创造额外的收入来源。然而,副业是一种理想的选择,可以帮助我们实现多样化的发展,并在经济上取得一定的突破。正如书中所言:…...

VSCode连接服务器

Pycharm连接服务器参考我的另一篇文章Pycharm远程连接服务器_pycharm进入服务器虚拟环境终端_Jumbo星的博客-CSDN博客 本质上Pycharm和VSCode都只是IDE,没有什么好坏之分。但是因为Pycharm连接服务器(准确来说是部署)需要买professional。而…...

Python爬虫网络安全:优劣势和适用范围分析

各位Python程序猿大佬们!在当今数字化时代,网络安全是至关重要的。保护你的网络通信安全对于个人和组织来说都是非常重要的任务。在本文中,我将与你一起探讨Python网络安全编程中的代理、虚拟专用网络和TLS这三个关键概念,分析它们…...

swift APP缓存

这里的APP缓存是指Cache文件夹里的内容,iOS系统从iOS 10开始就支持系统自动清理功能了。 建议重要的内容不要放到 Cache文件夹中。 一、获取缓存 /// 获取缓存大小public static func getCacheSize() -> String {let folderPath NSSearchPathForDirectoriesIn…...

RTL8188EU USB WiFi模块AP模式配置避坑指南

RTL8188EU USB WiFi模块AP模式配置实战:从编译到避坑全解析 在物联网和嵌入式开发领域,RTL8188EU USB WiFi模块因其低成本和高兼容性被广泛使用。但当你尝试将其配置为AP模式时,官方hostapd的兼容性问题往往会让开发者陷入数天的调试泥潭。我…...

Phi-4-mini-reasoning真实案例:GPT-4对比测试中更优的确定性推理表现

Phi-4-mini-reasoning真实案例:GPT-4对比测试中更优的确定性推理表现 1. 模型介绍 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同,它被设计用来解决数学题、逻辑题等需…...

高级CMB2技巧:可重复字段组和动态条件显示

高级CMB2技巧:可重复字段组和动态条件显示 【免费下载链接】CMB2 CMB2 is a developers toolkit for building metaboxes, custom fields, and forms for WordPress that will blow your mind. 项目地址: https://gitcode.com/gh_mirrors/cm/CMB2 CMB2是Word…...

Z-Image-ComfyUI场景应用:为社交媒体快速生成配图,提升内容创作效率

Z-Image-ComfyUI场景应用:为社交媒体快速生成配图,提升内容创作效率 1. 社交媒体内容创作的痛点与解决方案 每天运营社交媒体账号时,你是否也面临这样的困境:精心撰写的文案已经完成,却卡在配图制作环节?…...

HUNYUAN-MT惊艳翻译效果:专业领域长文档翻译案例集

HUNYUAN-MT惊艳翻译效果:专业领域长文档翻译案例集 最近在尝试各种翻译工具时,我偶然间用到了HUNYUAN-MT 7B模型来处理一些工作上的专业文档。说实话,一开始没抱太大期望,毕竟专业翻译的门槛不低,尤其是那些充满术语和…...

LiuJuan20260223Zimage开箱体验:基于Z-Image LoRA,这个专精模型到底有多好用?

LiuJuan20260223Zimage开箱体验:基于Z-Image LoRA,这个专精模型到底有多好用? 你有没有遇到过这样的情况:想用AI画一个特定的人物,比如你故事里的主角,或者一个IP形象,但生成的图片要么不像&am…...

从零开始:用CosyVoice2-0.5B快速搭建AI语音生成平台

从零开始:用CosyVoice2-0.5B快速搭建AI语音生成平台 1. 为什么选择CosyVoice2-0.5B? 语音合成技术已经发展多年,但大多数解决方案要么需要复杂的配置过程,要么需要大量训练数据。阿里开源的CosyVoice2-0.5B打破了这一局面&#…...

企微API集成指南——从回调到主动发送,全流程代码解析

企业微信提供了丰富的API,用于接收用户添加事件、发送消息、管理标签等。今天从实战角度,给出API集成的最佳实践,附带伪代码。一、核心API清单API用途频率限制获取access_token调用其他API的前提2000次/分钟添加外部联系人通过好友每个号300人…...

Go语言中的Panic和Recover:错误处理的艺术

Go语言中的Panic和Recover:错误处理的艺术 1. Panic和Recover的基本概念 Panic和Recover是Go语言中用于处理异常情况的机制。Panic用于在程序遇到无法恢复的错误时终止程序,而Recover用于捕获Panic并恢复程序的正常执行。 Go语言的错误处理哲学是显式处理…...

别再找插件了!手把手教你用uni-app的Canvas API画一个带渐变和刻度的环形进度条

原生Canvas魔法:在uni-app中打造高性能渐变环形进度条 每次看到那些酷炫的数据可视化图表,你是不是也想过自己动手实现?但面对复杂的第三方图表库文档和性能问题又望而却步。今天我要分享的是如何用uni-app原生Canvas API,从零开始…...