项目设计思路

一般原则

一般偏大型项目应包含数据访问层与业务处理层

1、数据访问层
  a、数据访问策略
    -DAO,通常一个表一个DAO类
    -Repository,更高抽象层次上处理业务实体聚合
  b、数据访问层
    -unin of work(工作单元)比如数据库的事务模式
    -Query Object(查询对象),格式化规则,自动创建SQL(实际上就是实现ORM的功能)
2、业务处理层
  a、业务逻辑组织
    -Transcation Script模式(事物脚本模式)例如单个的函数实现单个功能,函数之间相互独立互不干扰。
    -Active Record(活动记录)在业务代码里面额外创建一个类和数据库表的类一一对应,对数据库的操作可以直接抽象到这个类,这个类直接将业务传给数据库类
    -Domain Model(领域模型)(创建一个类,包含属性和方法)
    -Anemic Domain Model(反模式)(创建一个类,只包含属性不包含方法)
    -领域驱动设计 利用Domain Model和Anemic Domain Model来实现业务的过程
  b.设计模式
  -工厂模式
  -策略模式
  。。。

实例解析

如上图所示:Infrastructure为基础设计层,放置一些公共组件,比如分页、验证码生成、XSS过滤等模块

      Respository层为数据服务层,负责数据处理以及数据持久化

      Model层(业务处理层)基本功能可以概括为(建模、创建接口、协调),创建的模型用于提供给服务层Service,接口用于限制Repository层,协调用于联系Model和Repository并生成数据模型(协调数据服务层和业务处理层时会用到依赖注入)

      Service层(服务层,消息的发送与响应)服务层调用业务层的协调者得到业务的数据模型,分解业务层的数据模型转化为视图模型,然后返回给UI层

      UI层(视图层)这里的代码相对简单,调用Service的API或接口函数。接受消息发送到Service层,返回视图模型与模板给用户

      Statics放置静态文件

      templates放置模板文件

      DomainDrivenDesign项目配置文件

业务处理层的基本逻辑代码示例:

#1、建立模型

class Car:
    pass
#2、创建接口:
class ICarRepository:

    def add_car_by_product_id(self,nid):
        """
        接口函数
        :param nid:
        :return:
        """
#3、协调

class CarService:
    def __init__(self,car_repsitory):
        self.carRepository = car_repsitory

    def buy(self):
        self.carRepository.add_car_by_product_id()

  

      

posted @ 2018-07-24 00:56  梦中琴歌  阅读(1822)  评论(0编辑  收藏  举报