Правильность реализации фабричного метода на Python

Решил попробовать внедрить паттерн проектирования "Фабричный метод". Сама программа представляет из себя бота для сервера в Discord. Вот сам пример кода с фабричным методом. Класс Firebase содержится в отдельном стороннем модуле firebase, для инициализации экземпляра этого класса как параметр передаётся сериализованный json объект, представляющий собой конфиг Firebase(ключ API, URL к БД и т.д.):

import json
from firebase import Firebase
from bot_config import BotConfig

class ConfigCreator:
    def CreateConfig(self, classConfig: str):
        return self.GetConfig(classConfig)

    def GetConfig(self, classConfig):
        if classConfig == 'BotConfig':
            return ConfigCreator._LoadBotConfig()
        elif classConfig == 'ConfigFirebase':
            return ConfigCreator._LoadConfigFirebase()
        else:
            raise ValueError(classConfig)
    
    @staticmethod
    def _LoadConfigFirebase():
        file = open('configfirebase.json', 'r')
        jsonConfig = json.loads(file.read())
        file.close()
        return Firebase(jsonConfig)
    
    @staticmethod
    def _LoadBotConfig():
        file = open('botconfig.json', 'r')
        jsonConfig = json.loads(file.read())
        file.close()
        return BotConfig(jsonConfig['token'], jsonConfig['prefix'])

А вот класс BotConfig, экземпляр которого хранит в себе токен и префикс для бота:

class BotConfig:
    def __init__(self, token, prefix):
        self._token = token
        self._prefix = prefix

И создание нужного экземпляра:

fb = creator.GetConfig('ConfigFirebase')

Хотелось бы узнать правильность написанного мною кода. Может быть что-то можно сделать лучше. Хочется, так сказать, взглянуть со стороны.


Ответы (0 шт):