Python高阶技巧 设计模式

设计模式

设计模式是一种编程套路,可以极大的方便程序的开发。

最常见、最经典的设计模式,就是我们所学习的面向对象了。

除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模式:

单例、工厂模式

建造者、责任链、状态、备忘录、解释器、访问者、观察者、中介、模板、代理模式

等等模式

设计模式非常多,我们主要挑选了2个经常用到的进行。

单例模式

创建类的实例后,就可以得到一个完整的、独立的类对象。

Python高阶技巧 设计模式_第1张图片

通过print语句可以看出,它们的内存地址是不相同的,即t1和t2是完全独立的两个对象。

Python高阶技巧 设计模式_第2张图片

某些场景下, 我们需要一个类无论获取多少次类对象,都仅仅提供一个具体的实例

用以节省创建类对象的开销和内存开销

比如某些工具类,仅需要1个实例,即可在各处使用

这就是单例模式所要实现的效果。

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。

在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。

  • 定义: 保证一个类只有一个实例,并提供一个访问它的全局访问点
  • 适用场景:当一个类只能有一个实例,而客户可以从一个众所周知的访问点访问它时。

Python高阶技巧 设计模式_第3张图片

str_tools_py.py
class StrTools:
    pass


str_tool = StrTools()
test.py
from str_tools_py import str_tool

s1 = str_tool
s2 = str_tool

print(id(s1))
print(id(s2))



结果:
1745944906384
1745944906384
test2.py
from str_tools_py import str_tool

s1 = str_tool
s2 = str_tool

print(id(s1))
print(id(s2))



结果:
1745944906384
1745944906384

总结:

1. 什么是设计模式

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

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

2. 什么是单例设计模式

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

  • 节省内存
  • 节省创建对象的开销

工厂模式

当需要大量创建一个类的实例的时候, 可以使用工厂模式。

即,从原生的使用类的构造去创建对象的形式

Python高阶技巧 设计模式_第4张图片

迁移到,基于工厂提供的方法去创建对象的形式。

Python高阶技巧 设计模式_第5张图片

使用工厂类的get_person()方法去创建具体的类对象

优点:

  • 大批量创建对象的时候有统一的入口,易于代码维护
  • 当发生修改,仅修改工厂类的创建方法即可
  • 符合现实世界的模式,即由工厂来制作产品(对象)

 Python高阶技巧 设计模式_第6张图片

"""
演示设计模式之工厂模式
"""


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')
teacher = pf.get_person('t')

总结:

1. 什么是工厂模式

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

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

2. 好处

  • 大批量创建对象的时候有统一的入口,易于代码维护
  • 当发生修改,仅修改工厂类的创建方法即可
  • 符合现实世界的模式,即由工厂来制作产品(对象)

其他待续

你可能感兴趣的:(Python,设计模式,python)