使用 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 直接使用接口实现的.