项目设计思路

一般原则

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

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

  

      

转载于:https://www.cnblogs.com/qiangayz/p/9357779.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值