• python 三层架构说明


    python 三层架构说明

    三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:
    表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。


    区分层次的目的即为了"高内聚低耦合"的思想。
    高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。
    内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。


    所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
    耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。
    模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。) 
    对于低耦合,粗浅的理解是:
    一个完整的系统,模块与模块之间,尽可能的使其独立存在。
    也就是说,让每个模块,尽可能的独立完成某个特定的子功能。
    模块与模块之间的接口,尽量的少而简单。
    如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
    这样有利于修改和组合。

    三层架构,如下图:


    1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
    2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
    3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

    示例:

     1 #coding:utf8
     2 
     3 from utility.sql_helper import MySqlHelper
     4 
     5 class Admin(object):
     6     def __init__(self):
     7         self.__helper = MySqlHelper()
     8         
     9     def Get_One(self,id):
    10         sql = "select * from userinfo where id = %s"
    11         params = (id,)
    12         return self.__helper.Get_One(sql, params)
    13     
    14     def CheckValidate(self,username,password):
    15         sql = "select * from userinfo where name=%s and password=%s"
    16         params = (username,password,)
    17         return self.__helper.Get_One(sql, params)
    18     
    19     
    admin.py
     1 #coding:utf8
     2 import MySQLdb
     3 import conf
     4 
     5 
     6 class MySqlHelper(object):
     7     def __init__(self):
     8         self.__conn_dict = conf.conn_dict
     9     def Get_Dict(self,sql,params):
    10         conn = MySQLdb.connect(**self.__conn_dict)
    11         cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor) 
    12         
    13         reCount = cur.execute(sql,params)
    14         data = cur.fetchall()   
    15 
    16         cur.close()
    17         conn.close()
    18         return data
    19        
    20     def Get_One(self,sql,params):
    21         conn = MySQLdb.connect(**self.__conn_dict)
    22         cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor) 
    23         
    24         reCount = cur.execute(sql,params)
    25         data = cur.fetchone()  
    26 
    27         cur.close()
    28         conn.close()
    29         return data
    sql_helper
    1 #coding:utf8
    2 
    3 conn_dict = dict(
    4     host='127.0.0.1',
    5     user='root',
    6     passwd='123456',
    7     db ='Admin'
    8     )
    conf.py
     1 #coding:utf8
     2 
     3 from module.admin import Admin
     4 
     5 def main():
     6     user=raw_input('username:')
     7     pwd=raw_input("password:")
     8     admin = Admin()
     9     result = admin.CheckValidate(user, pwd)
    10     if not result:
    11         print '用户名或密码错误'
    12     else:
    13         print '进入后台登录界面'
    14 
    15 if __name__== '__main__':
    16     main()
    index.py
  • 相关阅读:
    php自动保存文章内容中的图片
    javascript中字符串操作函数
    iis 301永久重定向图文教程
    ORA27101,ORA27102 错误解决方法
    IIS中启用Gzip压缩传输网页方法
    asp.net抓取163邮箱联系人实现代码
    windows IIS 日志文件如何查看及分析
    输出页面所有HTML 包括 JS 添加 的内容
    VS2005无法启动调试 及 解决办法
    Json转行DataTable
  • 原文地址:https://www.cnblogs.com/shiluoliming/p/6661421.html
Copyright © 2020-2023  润新知