工厂模式+反射实现可扩展性

为什么在开发过程中我们需要实现可扩展性

  • 在实际开发过程中,如果我们的代码可扩展性很低,那么在我们需要添加新功能时,就需要频繁的改动我们的源代码,这样既会导致工作量的增加,又会让程序的稳定性收到影响,一旦我们不小心改错了,就会导致一系列的bug

  • 实现可扩展性,需要我们利用配置文件以及工厂模式和反射。

  • 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替类名()操作的一种模式。在python的django框架中 ,就大量使用了工厂模式,工厂模式在Python程序系统可以说是随处可见。这样会给你系统带来更大的可扩展性和尽量少的修改量。

目录结构

image

music\shopping\washing.py 三个类只是类名的不同

class Washing(object):
    def __init__(self, name):
        self.name = name

    def func(self):
        print(self.name + '正在洗碗')

manage.py

import importlib
from settings import APPS_PATH_INFO


def run():
    for item in APPS_PATH_INFO:
        model_name, class_name = item.rsplit('.', maxsplit=1)

        model = importlib.import_module(model_name)
        cls = getattr(model, class_name)
        obj = cls('lucas')
        obj.func()


if __name__ == '__main__':
    run()

settings.py

APPS_PATH_INFO = [
    'apps.music.Music',
    'apps.shopping.Shopping',
    'apps.washing.Washing',
]

执行结果

image

  • 每次我们需要新增APP时,只需要在apps里面加上对应的py文件,然后在里面写上自己的逻辑,然后在配置文件配置好,不用更改manage.py里面的内容。这样我们就实现了一个简单的可扩展性的工厂模式
posted @ 2021-03-12 09:39  kingdoms  阅读(118)  评论(0)    收藏  举报