zoukankan      html  css  js  c++  java
  • 开放封闭原则

    如已知某些配置会在之后的运行中可能被多次修改,则:

      项目中业务代码不允许修改

      配置文件可以允许修改

    示例:

    projict:

      db:

        mysql.py

        sqlserver.py

      app.py

      settings.py

      start.py

    db:

    #mysql.py
    
    class MySQLHelper(object):
    
        def fetchone(self):
            """
            链接MySQL,获取一条数据
            :return: 
            """
            print('MySQL.fetchone')
    
    #sqlserver.py
    
    class SqlServerHelper(object):
        def fetchone(self):
            """
            链接SQLServer,获取一条数据
            :return: 
            """
            print('SQLServer.fetchone')
    

      

    settings:

    # DB_PATH = "db.mysql.MySQLHelper"
    DB_PATH = "db.sqlserver.SqlServerHelper"
    

     

    apps:

    from projiect.settings import DB_PATH
    def func():
        # 导入文件
        # 反射
        # DB_PATH = "db.mysql.MySQLHelper"
        module_path,cls_name = DB_PATH.rsplit('.',maxsplit=1)
    
        # 以字符串的形式导入模块
        # from db import mysql
        import importlib
        module_obj = importlib.import_module(module_path)
    
        # 去模块中导入类
        cls = getattr(module_obj,cls_name)
    
        # 类实例化
        obj = cls()
        obj.fetchone()
    
    
    if __name__ == '__main__':
        func()
    

      

     

  • 相关阅读:
    问题总结
    Https网络安全架构设计
    分布式ID生成策略
    [转]匿名内部类详解
    JAVA名词解释
    MQ实战
    手写SpringMVC实现
    多线程问答
    BIO、NIO实战
    spring中@Value("${key}")值原样输出${key}分析与解决
  • 原文地址:https://www.cnblogs.com/wangbaihan/p/8075909.html
Copyright © 2011-2022 走看看