使用 kotlin 簡化防腐層設計#
#kotlin 引用
[[我是如何使用 xlog 的 ——plantuml 渲染]]
Java 的防腐層#
package 防腐層{
component 接口 {
interface 接口定義
}
component 實現 {
class 接口實現
}
接口實現 --|> 接口定義
}
package Application {
component 功能 {
}
component 應用 {
}
}
功能 --> 接口
應用 --> 功能
應用 --> 實現
為了防止功能組件直接使用接口實現,需要把接口實現分離到單獨的實現組件,功能組件只依賴接口組件
kotlin 的防腐層#
package 防腐層{
interface 接口定義
class 接口實現
note left: package可見範圍
接口實現 --|> 接口定義
}
package Application {
component 應用 {
}
component 功能 {
}
應用 --> 功能
功能 --> 防腐層
}
因為 kotlin 的 package 可見範圍可以防止功能組件直接使用接口實現,所以使用 kotlin 是不在需要分離接口實現到獨立的組件,整體上減少了組件的數量,更容易理解和維護
注意#
kotlin 的 package 可見範圍只對 kotlin 有效,所以當 java 使用 kotlin 編寫的庫時,是無法阻止 java 直接使用接口實現的.