cola前言 COLA提供了一整套代碼架構,拿來即用。 其中包含了很多架構設計思想,包括討論度很高的領域驅動設計DDD等。 COLA 的分層是一種經過改良的三層架構,主要是講傳統的業務邏輯層拆分為展示層、應用層、領域層和基礎設施層。 展示層(Presentation Layer):負責以 Rest ...
cola前言
COLA提供了一整套代碼架構,拿來即用。 其中包含了很多架構設計思想,包括討論度很高的領域驅動設計DDD等。
COLA 的分層是一種經過改良的三層架構,主要是講傳統的業務邏輯層拆分為展示層、應用層、領域層和基礎設施層。
- 展示層(Presentation Layer):負責以 Rest 的風格接收 Web 請求,然後將請求路由給 Application 層執行,並返回視圖模型(View Model),其載體通常是數據傳輸對象(Data Transfer Object, DTO);
- 應用層(Application Layer):主要負責獲取輸入、組裝上下文、做輸入校驗、調用領域層做業務處理,當需要時發送消息通知。當然,層次是開放的,若有需要,應用層也可以直接訪問基礎設施層;
- 領域層(Domain Layer):主要封裝了核心業務邏輯, 並通過領域服務(Domaini Service)和領域對象(Entities)的函數對外部提供業務邏輯的計算和處理;
- 基礎設施層(Infrastructure Layer):主要包含數據訪問通道(Tunnel)、Config 和 Comon。這裡Tunnel這個概念對所有的數據來源進行抽象,數據來源可以是資料庫(MySQL/NoSQL)、搜索引擎、文件系統,也可以是SOA服務等;Config 負責應用的配置;Common是通用的工具類;
cola組件規範
分層架構圖
cola包結構
應用層的包結構
領域層的包結構
基礎設施層的包結構
命名規範
在COLA架構中,制定了一系列的命名規範,以便通過名稱就能知曉該類的作用和職責範圍,從而極大的提升代碼的可理解性,提升代碼審查的效率
規範 | 用途 | 解釋 |
---|---|---|
xxxCmd.java | Client Request | Cmd代表Command,表示一個用戶請求 |
xxxCo.java | Client Object | 客戶端對象,用於傳遞數據,等同於DTO |
xxxServiceI.java | API Service | API介面類 |
xxxCmdExe.java | Command Executor | 命令模式,每一個用戶請求對應的一個執行器 |
xxInterceptor.java | Command Interceptor | 攔截器,用於處理切麵邏輯 |
xxxExtPt.java | Extension Point | 擴展點 |
xxxExt.java | Extension | 擴展實現 |
xxxValidator.java | Validator | 校驗器,用於校驗的類 |
Convertor | Convertor | 轉化器,實現不同層級對象互轉 |
xxxAssembler.java | Assembler | 組裝器,組裝外部服務調用參數 |
xxxE.java | Entity | 代表領域實體 |
xxxV.java | Value Ojbect | 代碼值對象 |
xxxRepository.java | Repository | 倉儲介面 |
xxxDomainService.java | Domain Service | 領域服務 |
xxxDo.java | Data Object | 數據對象,用於持久化 |
xxxTunnel.java | Data Tunnel | 數據通道,DAO 是最常見的通道,也可是其他通道 |
xxxConstant.java | Constant class | 常量類 |
xxxConfig.java | Configuration clas | 配置類 |
xxxUtil.java | Utility class | 工具類 |