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()
    

      

     

  • 相关阅读:
    saltstack实战
    ubuntu16配置mysql5.7主从同步
    推荐书单
    SpringMVC : 乐鲜电子商城
    Idea 使用指南
    SpringBoot : 人人托福系统网站
    Android : SQLite 版学生系统
    Android : 相机及本地储存
    Android : ListView 学生管理
    Android : SeekBar 实现图片旋转缩放
  • 原文地址:https://www.cnblogs.com/wangbaihan/p/8075909.html
Copyright © 2011-2022 走看看