python黑马程序员(单例模式&工厂模式)笔记

一、单例模式

1、设计模式就是一种编程套路

      使用特定的套路得到特定的效果

2、什么时单例设计模式

     单例模式就是对一个类,只获取其唯一的类实例对象,持续复用它 

     节省内存

     节省创建对象的开销

非单例模式效果:

# 演示单例模式的效果
# 非单例效果
class StrTools:
    pass
s1=StrTools()
s2=StrTools()
print(s1)
print(s2)
# 输出地址不同
# <__main__.StrTools object at 0x0000023A76357190>
# <__main__.StrTools object at 0x0000023A76357130>

输出结果:

   输出的地址不同

python黑马程序员(单例模式&工厂模式)笔记_第1张图片

单例模式效果:

  创建str_tools_py.py   Test1.py Test2.py 三个文件

str_tools_py.py 

class StrTools():
    pass
str_tool=StrTools()

Test1.py

from str_tools_py import str_tool
s1=str_tool
s2=str_tool
print(s1)
print(s2)

Test2.py

from str_tools_py import str_tool
s1=str_tool
s2=str_tool
print(s1)
print(s2)

运行结果:

Test1.py中:

python黑马程序员(单例模式&工厂模式)笔记_第2张图片

 Test2.py中:

python黑马程序员(单例模式&工厂模式)笔记_第3张图片

 可以看出 不论实在 Test1.py中 还是在 Test2.py中 输出对象的地址是相同的

二、工厂模式

1、工厂模式:

将对象的创建由使用原生本身创建

转换到由特定的工厂方法来创建

2、好处

大批量创建对象的时候有统一的入口,易于代码维护

当发生修改,仅修改工厂类的创建方法即可

符合现实世界的模式,即由工厂来制作产品(对象)

#工厂模式
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
        if p_type=='s':
            return Student
        else:
            return Teacher

pf=PersonFactory()
worker=pf.get_person('w')
stu=pf.get_person('s')
teacher=pf.get_person('t')

你可能感兴趣的:(python笔记,单例模式)