首页 代码 正文

什么是设计模式(Design pattern)

2023.12.1 代码 191

设计模式

一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。

设计模式有20多种,对应20多种软件开发中会遇到的问题。

单例模式

确保一个类只有一个对象。

写法:

  • 把类的构造器私有
  • 定义一个类变量记住类的一个对象
  • 定义一个类方法,返回对象

Python实现

a.py文件:

class Tools:
    pass

tool = Tools()

b.py文件:

from a import tool

t1 = tool
t2 = tool
print(t1)
print(t2)

工厂模式

当需要大量创建一个类的实例的时候,可以使用工厂模式。即,从原生的使用类的构造去创建对象的形式,迁移到,基于工厂提供的方法去创建对象的形式。

Python实现

class Person:
    pass

class Teacher(Person):
    pass

class Student(Person):
    pass

class Factory:
    def get_person(self, p_type):
        if p_type == "t":
            return Teacher()
        elif p_type == "s":
            return Student()

factory = Factory()
teacher = factory.get_person("t")
student = factory.get_person("s")

模板模式

当功能内部一部分实现确定,一部分实现不确定,这时可以把不确定的部分暴露出去,让子类去实现。编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是模板模式。

from abc import ABC, abstractmethod
import time

class Template(ABC):

    @abstractmethod
    def job(self):
        pass

    def cal_time(self):
        start = time.time()
        self.job()
        end = time.time()
        print(f"耗时 {end-start} 秒")

class AA(Template):
    def job(self):
        n = 0
        for i in range(1000_000):
            n += i

aa = AA()
aa.cal_time()
  1. 转载请保留原文链接:什么是设计模式(Design pattern) https://aboss.top/post/548/
  2. 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
  3. 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
  4. 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
  5. 联系方式(#替换成@):mail#aboss.top

评论

热门搜索