我有一個非常籠統的設計問題,但我會用一個例子來具體描述它。邏輯與物理設計
假設您正在爲數字打印機開發嵌入式軟件。該機器有4個打印頭(每種C,M,Y,K顏色)。每個打印頭執行相同的任務:取出墨粉並將其放在頁面上。
在運行時,我們可以用兩種不同的方式組織我們的API。我們要麼遵循邏輯(又稱「功能」或「過程」)設計,以便客戶端軟件可以控制所有打印頭的打印過程(例如,一次更改所有顏色的亮度)。或者我們遵循物理設計,以便客戶端軟件可以單獨控制每個打印頭(例如,僅更改品紅色的亮度)。
這是軟件設計中的一個典型困境:我們或者按照活動或者按照架構進行組織。按功能或按形式。我的問題是:是否有任何可靠的選擇標準?不同的項目會有不同的選擇,可以根據自己的情況選擇合適的項目;所以我不是問哪個最好,只是如何選擇。例如。我會對你關於鬆散耦合,可維護性,分層,面向角色設計,建築設計模式等方面的想法感興趣。