技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
25
1
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
25
篇
D25 Ch 22 整潔的架構
12th鐵人賽
azsx96385
團隊
Outcome First
2020-10-08 19:55:03
751 瀏覽
分享至
架構都有同個目標-關注點分離
透過將軟體分層,實現關注點分離,每個業務規則至少有一層屬於他們,使用者及系統也至少有一層屬於他們
共同特徵
獨立於框架
好的架構不依賴於現有強大的軟體程式庫,它允許你使用這樣框架作為工具,而非強迫你將系統塞進入有限約束中
可測試
業務規則可以在沒有UI、資料庫、web伺服器或其他外部元素的情況下,進行測試
獨立於UI
無需更改系統其他部分,UI也可以很輕易做更改,ex. web → APP
獨立於資料庫
你的業務規則不綁定資料庫,你可以隨意將Mongo\Bigtable\couchDB抽換成Oracle\SQLserver
獨立於任何外部代理
業務規則對於外界介面一無所知
依賴規則-原始碼依賴關係只能指向內部,朝向更高層級策略
內圈是策略,外圈是機制
越內圈軟體,層次越高,越外圈,層次越低
內圈沒有任何東西可以對外圈事情有所了解
外圈宣告名稱不能在內圈程式碼中出現(函式、類別、變數、任何被命名之軟體實體)
外圈宣告的資料格式不應該被內圈使用,尤其是格式是由外圈中框架所產生,內圈不應該被外圈任何東西影響
實體層
Entity 封裝了企業級的關鍵業務資料,當外部變化,實體曾是最不可能被改變的
使用案例層
使用案例層,包含應用程式特定的業務規則,封裝並實作系統所有使用案例
這些使用案例編排實體之間的資料流,並指揮這些實體使用他們的關鍵業務規則,來實現使用案例的目標
介面轉接層
介面轉接層,的軟體是一組轉接器,可以將資料從最適合於使用案例和實體的格式→轉換→最適合某些外部代理(ex. DB or web)的格式
介面轉接層,包括GUI的MVC架構、表示器(presenter)、視圖、控制器controller
模型 model 可能只是資料結構,他從控制器傳給使用案例,並且之後還會從使用案例回傳給表示器(presenter)和視圖(view)
在介面轉接層,資料從最適合實體和使用案例的形式,轉換為最適合正在使用的任何持久性框架(ex. DB )
在介面轉接層,之內的所有程式碼都不應該對於資料庫有所暸解
任何其他必須將資料從外部格式(ex. 外部服務)轉換為使用案例和實體所使用的內部格式轉接器,也屬於這一層
框架和驅動層
框架和驅動層,通常由框架和工作組成(ex. 資料庫和web框架),一般來說,我們不會在此寫太多程式碼
框架和驅動層是所有細節的去處,web是細節,資料庫是細節,我們將這些東西放最外層,因為他們不會有什麼危害
留言
追蹤
檢舉
上一篇
D24 無暇程式碼-CH20 商業邏輯
下一篇
D25 ch 22 整潔的架構
系列文
30天|入門NestJs連載學習筆記
共
26
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
22
D22 台南的散步點心
23
D23 台南|國慶煙火在漁光
24
D24 無暇程式碼-CH20 商業邏輯
25
D25 Ch 22 整潔的架構
26
D25 ch 22 整潔的架構
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22208
篇
完賽人數
600
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
安卓電視盒
虛擬機點啟動 卻出現錯誤
PDF影像資料不足
安裝DRIVER一問
win10系統,一個資料夾無法刪除(因裡面有太多層子資料夾),求刪除的解法
請問大家都是如何進行部屬前的程式測試
關於pychram 安裝新的anaconda後設定完全亂掉了.求前輩們幫忙查看哪裡設定出錯了.
商品計價公式
開啟wifi後在輸入帳密視窗卡住
Outlook 2010 更新到 Outlook 2024 時,行事曆不見了,怎辦?
熱門回答
商品計價公式
PDF影像資料不足
虛擬機點啟動 卻出現錯誤
win10系統,一個資料夾無法刪除(因裡面有太多層子資料夾),求刪除的解法
如何阻止系統再次安裝 KB5048652 更新(或某一個更新)
熱門文章
使用LINE發報機房溫度/濕度 過高通知
每日一篇學習筆記 直到我做完專題 :( [Day41]
每日一篇學習筆記 直到我做完專題 :( [Day42]
探索容器資源限制:透過實驗理解 Docker 的 CPU 和記憶體調度 (2)
體驗SQL資料庫Day2:常用資料型態解析和資料操作
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}