首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
Chapter 38 计划模式
返回列表
发新帖
Chapter 38 计划模式
[复制链接]
发表于 2026-2-7 03:14:25
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
接待各人订阅【Python从入门到夺目】专栏,一起探索Python的无穷大概!
媒介
在软件开发中,计划模式提供了一种可重用的办理方案,以应对在特定情况中反复出现的题目。这些模式是基于履历总结的最佳实践,可以或许进步
代码
的可维护性、可读性和机动性。本章具体先容了两个常用的计划模式:单例模式和工厂模式。
本篇文章参考:黑马步伐员
一、单例模式
①界说
单例模式是一种创建型计划模式,确保某个类只有一个实例,并提供一个全局访问点。
②实用场景
体系只必要一个共享的实例来管理某些资源时(如设置管理、
日志
记载)
多个客户端必要访问该实例时
在Python中,创建类的实例后,可以得到一个完备、独立的对象。以下是一个简单的示例:
class StrTools:
pass
s1=StrTools()
s2=StrTools()
print(s1)
print(s2)
复制
代码
输出结果:
<
main
.StrTools object at 0x000001AB2A816240>
<
main
.StrTools object at 0x000001AB2A814E30>
【分析】
通过 print 语句可以看出,s1和s2的内存所在差异,这表明它们是完全独立的两个对象。
然而,在某些场景下,我们大概盼望一个类岂论被实例化多少次,都只提供一个具体的实例。这种计划可以资助我们节省创建对象的开销和内存利用。比方,对于一些工具类,只需一个实例即可在各个地方利用。这也正是单例模式(Singleton Pattern)所要实现的结果。通过单例模式,我们可以确保在整个应用步伐中只有一个实例存在,从而优化资源管理并提升
性能
。
③实现方式
a. 界说实例:
在一个.py文件中界说一个实例
class StrTools:
pass
str_tool=StrTools()
复制
代码
b. 导入实例:
在另一个文件中导入这个实例
from str_tools import str_tool
s1=str_tool
s2=str_tool
print(s1)
print(s2)
复制代码
输出结果:
<str_tools_py.StrTools object at 0x000001AB2A803F50>
<str_tools_py.StrTools object at 0x000001AB2A803F50>
【分析】
s1 和 s2 都指向同一个 str_tool 实例,它们现实上引用的是同一个对象,以是都指向同一个内存所在。
二、工厂模式
①界说
工厂模式是一种创建型计划模式,通过界说一个接口来创建对象的实例,而不必要指明具体类的实例化过程。
②实用场景
必要大量创建相似范例的对象时
体系必要对产物的创建过程举行管理时
利用类的构造去创建对象:
class Person:
pass
class Worker(Person):
pass
class Student(Person):
pass
class Teacher(Person):
pass
worker=Worker()
stu=Student()
teacher=Teacher()
复制代码
【分析】
该段代码简单直接,恰当于简单对象创建、类数目较少、无复杂依靠关系的代码场景。但代码扩展性较差,当必要新增大
量子
类时,必要在每个地方修改代码,会增长维护资本。
基于工厂提供的方法去创建对象:
class Person:
pass
class Worker(Person):
pass
class Student(Person):
pass
class Teacher(Person):
pass
class PersonFactory:
def get_person(self,p_type):
if p_type=="w":
return Worker()
elif p_type=="s":
return Student()
else:
return Teacher()
pf=PersonFactory()
worker=pf.get_person("w")
stu=pf.get_person("s")
worker=pf.get_person("t")
复制代码
【分析】
这段代码将对象的创建封装在工厂类中,通过工厂类的 get_person()方法来创建具体的类对象,符合现实天下的模式,即由工厂负责生产产物(对象)。如果将来要添加新的子类(如 Admin),只需在 get_person() 方法中添加相应的逻辑,而不必要对其他代码举行修改,易于扩展,可维护性高。
回复
使用道具
举报
返回列表
浏览过的版块
分布式数据库
Mysql
开源技术
网络安全
云原生
MES
Oracle
Java
公有云
欢乐狗
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表