数据访问层 DAL/DAO
	- 访问数据库
	标准:数据库表》类
	mysql_sql.py
		class UserInfo:
			def add(..)
			def remove(..)
			def fetch(..)
			def fetchall(..)
		class UserInfo:
			def add(..)
			def remove(..)
			def fetch(..)
			def fetchall(..)
	mysql_orm.py
		class UserInfo:
			def add(..)
			def remove(..)
			def fetch(..)
			def fetchall(..)
		class UserInfo:
			def add(..)
			def remove(..)
			def fetch(..)
			def fetchall(..)
	oracle_sql.py
		class UserInfo:
			def add(..)
			def remove(..)
			def fetch(..)
			def fetchall(..)
		class UserInfo:
			def add(..)
			def remove(..)
			def fetch(..)
			def fetchall(..)
	
	
业务处理层 BLL/Sevice
	factory读取配置文件  mysql_sql
	obj = UserInfo()
	obj.add(...)

	- 检查用户是否已经存在
	- 存在,已经
	- 注册
	
	account:
		用户表操作
		验证
		订单查询
		
	account:
		用户表操作
		验证
		订单查询
		
	
UI表示层   UI/UI
	M
	V
	C   controller

  

测试:

dao
service
web
	model
	views
	controllers
app.py

三层架构 领域驱动模型

程序说明:

  1   Mapper.static_mapper() #模块的方法执行。DaoFacotory.NewsDaoFactory.set_dao(PyMySQL.NewsDao()) ,定义了单独的表访问数据的方式

  2 看一DaoFactory 调用静态方法 形似静态字段调用 设置新的查询方式。默认是orm现在改成pymysql

class NewsDaoFactory:

    __dao = PyORM.NewsDao()

    @staticmethod
    def set_dao(dao):
        NewsDaoFactory.__dao = dao

    @staticmethod
    def get_dao():
        return NewsDaoFactory.__dao

  3 看看service怎么调的呢?

def login(username, password):
    user_info_dao = UserInfoDaoFactory.get_dao() # 现获取
    ret = user_info_dao.fetch_single_by_user_pwd(username, password)
    if ret:
        pass
    else:
        pass

  

流程都知道了吧

 

 

DAO

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from Dao import PyORM


class UserInfoDaoFactory:

    __dao = PyORM.UserInfoDao()

    @staticmethod
    def set_dao(dao):
        UserInfoDaoFactory.__dao = dao

    @staticmethod
    def get_dao():
        return UserInfoDaoFactory.__dao


class NewsDaoFactory:

    __dao = PyORM.NewsDao()

    @staticmethod
    def set_dao(dao):
        NewsDaoFactory.__dao = dao

    @staticmethod
    def get_dao():
        return NewsDaoFactory.__dao
DaoFactory.py

相关文章: