Niushop采用 數據業務層 (Service層)單獨分層的設計架構模式
一般的小型業務系統,大多數的設計是這樣的
Controller (Model +DAO)---> View
在控制器內同時實現數據業務邏輯(Model +DAO)的處理方式,把處理結構反饋給視圖層來渲染顯示。對于業務邏輯不是非常復雜的系統完全可以采用這樣的簡單設計來實現。這樣做的好處是編寫簡單,容易理解,需要進行代碼編寫處理的地方相對集中。
例如:實現一個訂單的創建業務
~~~
namespace app\Order\controller;
class Order
{
public function CreateOrder()
{
Db::startTrans();
try{
//步驟一創建訂單
$order = new Order;
$order->orderId = '20170601000001';
$order->order_date = 'now';
$order->save();
//步驟二創建訂單項
foreach($orderItem in $items){
$item = new OrderItem;
$item->orderId = $order->orderId;
$item->order_itemid = $orderItem->id;
$item->save();
}
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
return 'Order_Create';
}
}
~~~
這樣的實現方式已辦理說是沒有問題。可是如果有這樣的情況,比如希望在創建購物車的時候也需要添加訂單項,這個時候上面的創建訂單項又要重寫一次。還有情況是用戶在修改訂單的時候也希望創建一個訂單項,這個時候同樣的方法又需要調用。如果像上面寫法,這樣會出現創建訂單項的代碼冗余調用。假如訂單項屬性字段很復雜,由于代碼冗余造成的維護和出錯率會越來越大,所以上面的設計方式就不太適合了。同時這樣設計有一個問題就是本來控制器的作用是數據和視圖的中間傳遞著,現在控制器充當2個職責,既負責視圖的顯示控制,又充當數據及業務邏輯的處理。導致代碼耦合性太大。
Model ---> DAO ---> Service ---> Controller ---> View
- Niushop開發手冊
- 基礎教程
- Niushop開源商城介紹
- Niushop安裝
- 目錄結構介紹
- 環境要求
- 模塊介紹
- 數據表結構說明
- 偽靜態(隱藏index.php)
- 添加后臺菜單
- 公眾號支付配置流程
- 開發教程
- 規格表設計原理機制
- 商品屬性表關系
- ajax分頁
- Data數據業務層設計
- 積分
- 常見問題
- 用戶使用手冊
- 商品管理
- 商品添加
- 商品規格
- 商品分類
- 添加商品品牌
- 商品分組
- 商品類型
- 商品回收站
- 相冊管理
- 咨詢管理
- 商品評價
- 文章管理
- 發布文章
- 文章分類
- 專題
- 營銷
- 優惠券
- 滿減送
- 限時折扣
- 滿包郵
- 訂單管理
- 訂單列表
- 用費模板
- 物流公司
- 商家地址
- 系統相關
- 導航設置
- 郵箱 短信配置
- 權限資源管理
- 角色權限管理
- 支付配置
- 第三方登錄配置
- 購物設置
- 地區管理
- 提現設置
- 添加首頁板塊
- 微信管理
- Niushop微信接入
- 分享內容設置
- 售后管理
- 退款換貨
- 站點
- 導航管理
- 廣告位
- 首頁板塊
- 會員
- 會員列表
- 粉絲列表
- 會員等級
- 會員提現
- 積分管理
- 余額管理
- 資產
- 銷售概況
- 商品分析
- 同行熱賣
- 運營報告
- 銷售排行
- 商城首頁設置
- 首頁設置