【蟒蛇】22、设计模式-学Python黑马程序员个人笔记

  1. 参考视频
  2. 单例模式
  3. 工厂模式

参考视频

黑马程序员python教程,8天python从入门到精通

单例模式

# 最常见最经典的设计模式,就是我们所学习的面向对象了
# 除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模式:
# 单例、工厂模式
# 建造者、责任链、状态、备忘录、解释器、访问者、观察者、中介、模板、代理模式
# 创建类的实例后,就可以得到一个完整的,独立的类对象。
# 通过print语句可以看出,他们的内存地址是不相同的,即完全独立的两个对象。
# 某些场景下,我们需要一个类无论获取多少次类对象,都仅仅提供一个具体的实例用以节省创建类对象的开销和内存开销,
# 比如某些工具类,仅需要一个实例,即可在各处使用
# 这就是单例模式所要实现的效果
"""
class Tool:
    pass


t1 = Tool()
t2 = Tool()
print(t1)
print(t2)
"""
# 定义:保证一个类只有一个实例,并提供一个访问它的全局访问点


class StrTools:
    pass


s1 = StrTools()
s2 = StrTools()
print(s1)
print(s2)
"""
<__main__.StrTools object at 0x00000205144A1F10>
<__main__.StrTools object at 0x00000205144A1E80>
"""

工厂模式

# 当需要大量创建一个类的实例的时候,可以使用工厂模式。
# 即从原生的使用类的构造去创建对象的形式
# 迁移到,基于工厂提供的方法去创建对象的形式。
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')
teacher = pf.get_person('t')

# 使用工厂类的get_person()方法去创建具体的对象优点:
# 大批量创建对象的时候有统一的入口,易于代码维护
# 当发生修改,仅修改工厂类的创建方法即可
# 复合现实世界的模式,即由工厂来制作产品(对象)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 3415226167@qq.com
资源 相册