技術問答
技術文章
iT 徵才
Tag
聊天室
2023 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
25
1
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
25
篇
D25 Ch 22 整潔的架構
12th鐵人賽
azsx96385
團隊
Outcome First
2020-10-08 19:55:03
581 瀏覽
分享至
架構都有同個目標-關注點分離
透過將軟體分層,實現關注點分離,每個業務規則至少有一層屬於他們,使用者及系統也至少有一層屬於他們
共同特徵
獨立於框架
好的架構不依賴於現有強大的軟體程式庫,它允許你使用這樣框架作為工具,而非強迫你將系統塞進入有限約束中
可測試
業務規則可以在沒有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鐵人賽
參賽組數
1123
組
團體組數
52
組
累計文章數
23096
篇
完賽人數
656
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
python
windows
php
c#
windows server
linux
css
程式設計
react
vue.js
熱門問題
老婆line被盜用換sin卡也無法拿回帳號使用權
請教外網如何連到家裡內部裝置
自家官網連線不到 (已解決)
請問公司網路通暢,卻部分固定的使用者無法連到特定網頁 ,求救~~~
ISO 27001改版輔導顧問公司推薦
請教各位前輩關於 IT 管理者為 User 重設 AD 帳號的密碼的行政流程
自我改善工作人際態度邊界
遠端連線到虛擬機器上,並希望能聽到音效
請問有提供對外http連線服務的主機,都需要上SSL嗎?
筆電蓋上背蓋無法開機,背蓋拆掉就正常(已解決)
熱門回答
如果當超人拯救了別人,世界真的需要超人嗎?
請問公司網路通暢,卻部分固定的使用者無法連到特定網頁 ,求救~~~
請問有提供對外http連線服務的主機,都需要上SSL嗎?
自家官網連線不到 (已解決)
ISO 27001改版輔導顧問公司推薦
熱門文章
Vigor Router Firewall NAT 一開全球通,如何做限制,只允許白名單IP通過,甚至敲門再開 TOTP 驗證
使用JS解構賦值踩到的雷
幫多階段 Dockerfile 除錯紀錄
你知道駭客如何入侵你的網站嗎?
WINDOWS遠端桌面的連接PORT如何修改
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}