• 项目设计思路


    一般原则

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

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

      

          

  • 相关阅读:
    zookeeper报错java.net.ConnectException: Connection refused: no further information
    dubbo 使用zookeeper 出现 Dubbo客户端调用报错NullPointerException
    docker下载镜像received unexpected Http status:500 Internal Server Error
    Spring Security 无法登陆,报错:There is no PasswordEncoder mapped for the id “null”
    js 解决中文乱码的问题
    使用Elasticsearch 出现的拒绝连接
    com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cn.edu.
    yii2判断数据库字段is null
    MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作
    yii2.0-rules验证规则应用实例
  • 原文地址:https://www.cnblogs.com/qiangayz/p/9357779.html
Copyright © 2020-2023  润新知