关于python面试中的设计模式,搞懂这些就足够了
off999 2024-10-27 11:57 41 浏览 0 评论
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
1、什么是设计模式?
设计模式是经过总结、优化,对我们经常遇到的一些编程问题的可重用的解决方案。设计模式不同于类或库可直接作用于代码。相反,它更为的高级,是一种必须在特定的情形下实现的方法模版。
2、面向对象中设计模式的六大原则是什么?
- 开闭原则:一个软件实体如类、模块和函数,对扩展开放,对修改关闭,即一个软件实体应该在不修改原有代码的基础上进行扩展
- 里氏替换原则:引用父类的地方都应该能透明的调用其子类的对象
- 依赖倒置原则:高层模块不应该依赖底层模块,两者都应该依赖其抽象类,抽象不应该依赖细节,细节依赖抽象,即针对接口编程,而非针对细节编程
- 接口隔离原则:使用多个专门的接口,而非一个单一的总接口,即客户端的实现不应该依赖于它无关的接口。
- 迪米特原则:一个软件实体应该尽可能少的和其它软件实体相互作用
- 单一职责原则:一个类只负责一项职责
3、列举几个常?的设计模式?
- 创建模式:提供实例化的方法,为适合的状况提供创建对象的方法
- 结构化模式:通常用于处理实体之间的关系,使得不同的实体可以更好的协同工作
- 行为模式:为不同的实体创建通信,为不同的实体之间提供更方便、更灵活的通信方式
4、Mixin 设计模式是什么?它的特点和优点?
为了不违背继承必须是"is-a"的关系同时又能实现多继承的效果,从而出现了Mixin类,这个类是为了做增强功能添加到子类中
特点:
- 责任明确:必须表示是一种功能,而非一个事物
- 功能单一:如果有多个功能,就写多个Mixin类
- 绝对独立:子类不继承该类,也可以正常工作,只是少一个功能而已
优点:
不使用Mixin会有以下的几点弊端,使用Mixin可避免
- 结构复杂:单继承子类的父类是什么,父类的父类是什么都是非常明确的;多继承子类有多个父类,父类又有多个父类,继承关系复杂
- 优先顺序模糊:多继承中多个父类如果有同名方法,在开发中,容易造成思维混乱,子类不知道继承哪个父类,增加开发难度
- 功能冲突:多继承中子类只能继承多个父类中的一个同名方法,从而导致其它父类的方法失效
5、什么是单例模式?单例模式的作用?
单例模式:在整个项目/系统中,一个类只有一个实例的存在
作用:节约内存资源
6、单例模式的应用场景有那些?
python的logger、Windows的资源管理器、线程池、网站计数器等
7、用python实现单例模式
# 创建一个单例模式
class Singleton(object):
_instance = None
def __new__(cls,*args,**kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls,*args,**kwargs)
return cls._instance
class MyClass(Singleton):
pass
#新建两个对象
m1=MyClass()
m2=MyClass()
#验证两个对象是否一致
print(m1 is m2)
print(id(m1), id(m2))私信小编01即可获取大量Python学习资料
相关推荐
- 微软重装系统(微软重装系统工具)
-
win10重装跳过账号登录的方法步骤如下:1、重装系统到“登录你的Microsoft账户”这一界面后,点击下方的“创建一个新账户”。2、接着进入...
- 迷你世界激活码生成器下载(迷你世界激活码生成器app下载)
-
序列号相当于导航的身份证,表示该导航对应的版本和机型。是厂家随机编号的,说不出什么意思。在Excel中,您可以使用以下方法快速生成序列号:方法一:填充法1.在第一个目标单元格中输入起始序号(No)值...
-
- 手机怎么设置wifi网络(手机如何设置wifi网络)
-
1、在手机上打开浏览器,在浏览器中输入192.168.1.1,并点击访问。2、在跳转的界面中,输入无线网络的管理名称和管理密码,并点击下方的确认。3、之后设置无线的名称和无线密码,设置完成后,点击下方的保存。4、之后即可完成设置,路由器重启...
-
2025-12-17 04:51 off999
- win11分区教程(win11磁盘分区形式)
-
在安装win11时,可以选择自定义分区,进入磁盘管理界面,选择要安装win11的磁盘,点击新建分区,设置分区大小和分区盘符,注意不要覆盖原有数据分区。建议将系统分区和数据分区分开,以便备份和维护。安装...
- win7双系统怎么切换(双系统win7切换win10)
-
要切换到其他操作系统,必须使用另一个启动设备或安装系统。以下是一些步骤:1.获取安装媒体(光盘或USB驱动器),包含您要安装的操作系统。2.在Windows7上打开电脑,将安装媒体插入计算机。3...
- project2010激活码(project2010永久激活码)
-
首先我们在网上下载project2010,因为project2010是付费使用的,所以我们可以先使用试用版,试用版期限是30天。首先我们来创建一个项目,然后使用project2010来进行管理。我们可...
- 迈克菲无法卸载(迈克菲无法卸载怎么解决)
-
一,找到迈克菲的图标二,右键,点击更改设置——实时扫描三,点击关闭,即可。1,控制面板中-管理工具-服务-停止MCAFEEFRAMEWORKMANAGER服务2,开始中—运行—输入cmd—输入“C...
- 爱普生打印机驱动(爱普生打印机驱动怎么安装)
-
1.首先进入爱普生网站。找到驱动以及手册证书下载2.选择打印机的类型,勾选正确的打印机型号。3.根据自己的电脑操作系统选择对应的软件版本点击下载。4.下载了LQ-630KII的驱动,双击运行。5.运行...
- windows7显示不是正版怎么办
-
不必担心,是不是正版影响并不大,不会影响你正常使用电脑,无非就是心里对于正版和盗版的道德观念会有点小执念罢了,但这些都不影响系统的正常使用。如果你非要安装正版,可以去买个正版光盘,安装系统后输入正版激...
- vivo手机锁屏密码忘了怎么办
-
如下:1输入密码在vivo的锁屏页面,连续输入五次错误密码,弹出新页面。2/4选择忘记密码在新的页面中,找到页面中的忘记密码这个选项,点击它。3/4进行身份验证切换到身份验证的页面后,回答两个问题,再...
-
- 微软官网免费下载win7吗(微软官网免费下载win10是真的吗)
-
最简单的方法就是,下载完镜像文件后,直接把镜像文件解压,解压到非C盘,然后在解压文件里面找到setup.exe,点击运行即可。安装系统完成后,在C盘找到一个Windows.old(好几个GB,是旧系统打包在这里,垃圾文件了)删除即可。扩展资...
-
2025-12-17 00:51 off999
- windows7的密钥在哪里(windows7密钥在哪里可以找到)
-
查看Windows7的密钥,你可以按照以下步骤进行操作:在键盘上按下Win+R组合键,打开运行窗口。在运行窗口中输入"regedit",然后点击确定,打开注册表编辑器。在注册表编...
- 360极速浏览器打不开网页(360极速浏览器经常打不开未响应)
-
先打开任务管理器结束360浏览器的所有进程(如果有).再尝试点击启动.如果还不行,重启电脑再试,如果还不行,执行杀毒检测和磁盘扫描,并卸载重装浏览器.强制360浏览器以极速模式打开页面方法如下:1、...
- win7系统图标(win7系统图标网络开关灰色)
-
1/6首先点击桌面右下角Windows,再点击【控制面板】2/6来到控制面板页面,我们再点击【个性化】3/6来到个性化页面,我们再点击左侧【更改桌面图标】4/6弹出桌面图标设置对话框,我们根据实际需要...
- 系统的超级宗门等级(系统的超级宗门人物介绍)
-
《一念永恒》中宗门等级划分分为:顶级宗门、一流宗门、二流宗门、三流宗门和小宗门。顶级宗门位于武道源头,是无数武极强者梦寐以求的存在。一流宗门规模庞大,经济实力雄厚,拥有大量高手强者,地位颇为显赫。二流...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
使用 python-fire 快速构建 CLI_如何搭建python项目架构
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
