网站后台管理系统制作软件,视频链接生成,asp网站用什么软件,以做网站为毕设欢迎大家订阅【Python从入门到精通】专栏#xff0c;一起探索Python的无限可能#xff01; 文章目录 前言一、单例模式二、工厂模式 前言
在软件开发中#xff0c;设计模式提供了一种可重用的解决方案#xff0c;以应对在特定环境中反复出现的问题。这些模式是基于经验总结… 欢迎大家订阅【Python从入门到精通】专栏一起探索Python的无限可能 文章目录 前言一、单例模式二、工厂模式 前言
在软件开发中设计模式提供了一种可重用的解决方案以应对在特定环境中反复出现的问题。这些模式是基于经验总结的最佳实践能够提高代码的可维护性、可读性和灵活性。本章详细介绍了两个常用的设计模式单例模式和工厂模式。 本篇文章参考黑马程序员
一、单例模式
①定义 单例模式是一种创建型设计模式确保某个类只有一个实例并提供一个全局访问点。
②适用场景
系统只需要一个共享的实例来管理某些资源时如配置管理、日志记录多个客户端需要访问该实例时
在Python中创建类的实例后可以得到一个完整、独立的对象。以下是一个简单的示例
class StrTools:passs1StrTools()
s2StrTools()
print(s1)
print(s2)输出结果 main.StrTools object at 0x000001AB2A816240 main.StrTools object at 0x000001AB2A814E30 【分析】 通过 print 语句可以看出s1和s2的内存地址不同这表明它们是完全独立的两个对象。
然而在某些场景下我们可能希望一个类不论被实例化多少次都只提供一个具体的实例。这种设计可以帮助我们节省创建对象的开销和内存使用。例如对于一些工具类只需一个实例即可在各个地方使用。这也正是单例模式Singleton Pattern所要实现的效果。通过单例模式我们可以确保在整个应用程序中只有一个实例存在从而优化资源管理并提升性能。
③实现方式 a. 定义实例 在一个.py文件中定义一个实例
class StrTools:passstr_toolStrTools()b. 导入实例 在另一个文件中导入这个实例
from str_tools import str_tool
s1str_tool
s2str_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:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passworkerWorker()
stuStudent()
teacherTeacher()【分析】 该段代码简单直接适合于简单对象创建、类数目较少、无复杂依赖关系的代码场景。但代码扩展性较差当需要新增大量子类时需要在每个地方修改代码会增加维护成本。
基于工厂提供的方法去创建对象
class Person:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passclass PersonFactory:def get_person(self,p_type):if p_typew:return Worker()elif p_types:return Student()else:return Teacher()pfPersonFactory()
workerpf.get_person(w)
stupf.get_person(s)
workerpf.get_person(t)【分析】 这段代码将对象的创建封装在工厂类中通过工厂类的 get_person()方法来创建具体的类对象符合现实世界的模式即由工厂负责生产产品对象。如果未来要添加新的子类如 Admin只需在 get_person() 方法中添加相应的逻辑而不需要对其他代码进行修改易于扩展可维护性高。