CSharp面象对象的语言也有类似的反射 reflection ,曾经近十年前自已在博客园写过。思维方式是一样的。便于根据配置文件,方便切换数据库。切换DAL层即可。
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# OS : windows 10
# Datetime : 2024/11/19 20:36
# User : geovindu
# Product : PyCharm
# Project : IctGame
# File : AbstractFactory.py
# explain : 学习
from __future__ import annotations
from abc import ABC, abstractmethod
import os
import sys
from sqlserverinterface.school import ISchool
from common.jsonHelper import JsonHelper
class AbstractFactory(ABC):
"""
工厂方法类
"""
def __init__(self):
"""
sqlserver、mysql、postgresql
"""
self.__strsql=self.getDal() #"postgresql" # 可以根据配置文件,进行切换数据库如是mysql,postgreSQL,sql server
def getDal(self)->str:
"""
:return:
"""
jsn = JsonHelper()
self.__strsql = jsn.readDal()
jsn.readDal()
return jsn.readDal()
@abstractmethod
def createSchool(self) -> ISchool:
"""
生成(创建)接口
:return:
"""
#dal = SchoolDal()
module = __import__(self.__strsql + 'dal.school')
dal = getattr(module, "SchoolDal")()
return dal