博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习 Day18 Python 3层架构
阅读量:5089 次
发布时间:2019-06-13

本文共 2483 字,大约阅读时间需要 8 分钟。

 

 Python 3层架构 

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:

表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

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

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

三层架构,如下图:

1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

示例:

admin.py (先理解为:业务逻辑层(BLL))

#coding:utf8from utility.sql_helper import MySqlHelperclass Admin(object):    def __init__(self):        self.__helper = MySqlHelper()            def Get_One(self,id):        sql = "select * from userinfo where id = %s"        params = (id,)        return self.__helper.Get_One(sql, params)        def CheckValidate(self,username,password):        sql = "select * from userinfo where name=%s and password=%s"        params = (username,password,)        return self.__helper.Get_One(sql, params)

sql_helper.py (先理解为:数据访问层(DAL))

#coding:utf8import MySQLdbimport confclass MySqlHelper(object):    def __init__(self):        self.__conn_dict = conf.conn_dict    def Get_Dict(self,sql,params):        conn = MySQLdb.connect(**self.__conn_dict)        cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)                 reCount = cur.execute(sql,params)        data = cur.fetchall()           cur.close()        conn.close()        return data           def Get_One(self,sql,params):        conn = MySQLdb.connect(**self.__conn_dict)        cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)                 reCount = cur.execute(sql,params)        data = cur.fetchone()          cur.close()        conn.close()        return data

conf.py

#coding:utf8conn_dict = dict(    host='127.0.0.1',    user='root',    passwd='123456',    db ='Admin'    )

index.py(先理解为:表现层(UI))

#coding:utf8from module.admin import Admindef main():    user=raw_input('username:')    pwd=raw_input("password:")    admin = Admin()    result = admin.CheckValidate(user, pwd)    if not result:        print '用户名或密码错误'    else:        print '进入后台登录界面'if __name__== '__main__':    main()

 

转载于:https://www.cnblogs.com/paulzhang511/p/9015513.html

你可能感兴趣的文章
.NET下XML文件的读写
查看>>
2009程序员考试大纲
查看>>
Linq to XML
查看>>
[HDOJ3718]Similarity(KM算法,二分图最大匹配)
查看>>
a 标签中调用js的几种方法
查看>>
从SQL Server 2005 中 导入 导出 excel 表格
查看>>
R Shiny(开源的R包)
查看>>
用Tensorflow做蝴蝶检测
查看>>
Hbuilder编辑器 设置less即时编译环境
查看>>
【2.2】创建博客文章模型
查看>>
【3.1】Cookiecutter安装和使用
查看>>
【2.3】初始Django Shell
查看>>
Linux(Centos)之安装Redis及注意事项
查看>>
重构视角(摘抄)
查看>>
【H5 音乐播放实例】第一节 音乐详情页制作(1)
查看>>
listView注意的地方
查看>>
Filter案例
查看>>
装饰器与子类化
查看>>
学习笔记(六)——数据表的查找功能、数据行、数据列的综合应用
查看>>
Java集合中List的Sort()方法进行排序
查看>>