從邏輯角度
- 對象的粒度就是對象所容納的邏輯,粗粒度容納的邏輯多,細粒度容納的邏輯少,粒度一般用在
權限管理
(解決了粗粒度的問題,因爲這部分具有通用性,而細粒度可以看成業務部分,因爲其具有不確定性)
從項目角度
根據項目模塊劃分的細緻程度
區分的,一個項目模塊(或子模塊)分得越多,每個模塊(或子模塊)越小,負責的工作越細,就說粒度越細,否則爲粗粒度
- 舉個例子:一個user類 其中有email屬性 ,一個用戶email很多個, 你可以用一個list來表示很多個email,也可以再設計一個email類,然後user的email屬性是email類組成的,那麼後一種設計的粒度就更細。它抽象出了更多的模型對應現實邏輯。
從用戶角度
- 當客戶需要數據的時候,它當然應該知道它的數據是什麼樣的啊,所以getData(),setData()時的Object 對象對於用戶並不是黑箱,用戶可以只用一個操作就完成數據的存取,這就是粗粒度的.
- 粒度應該是相對與該類的使用者來說的,如果存取只需要有限的操作,而沒有暴露太多的
底層實現
則是粗粒度的,相反你把每個屬性暴露給用戶讓它都可以對之進行操作則是細粒度的.
從實例角度
- 粗粒度:表示類別級,即僅考慮對象的類別(the type of object),不考慮對象的某個特定實例。比如,用戶管理中,創建、刪除,對所有的用戶都一視同仁,並不區分操作的具體對象實例。
細粒度:表示實例級,即需要考慮具體對象的實例(the instance of object),當然,細粒度是在考慮粗粒度的對象類別之後,纔再考慮特定實例。比如,合同管理中,列表、刪除,需要區分該合同實例是否爲當前用戶所創建。