使用kotlin简化防腐层设计

使用 kotlin 简化防腐层设计

#kotlin 引用
[[我是如何使用 xlog 的 ——plantuml 渲染]]

Java 的防腐层

Copy
package 防腐层{
component 接口 {
interface 接口定义
}
component 实现 {
class 接口实现
}
接口实现 --|> 接口定义
}
package Application {
component 功能 {
}

component 应用 {
}
}
功能 --> 接口
应用 --> 功能
应用 --> 实现

为了防止功能组件直接使用接口实现，需要把接口实现分离到单独的实现组件，功能组件只依赖接口组件

kotlin 的防腐层

Copy
package 防腐层{
interface 接口定义
class 接口实现
note left: package可见范围
接口实现 --|> 接口定义
}
package Application {
component 应用 {
}
component 功能 {
}
应用 --> 功能
功能 --> 防腐层
}

因为 kotlin 的 package 可见范围可以防止功能组件直接使用接口实现，所以使用 kotlin 是不在需要分离接口实现到独立的组件，整体上减少了组件的数量，更容易理解和维护

注意

kotlin 的 package 可见范围只对 kotlin 有效，所以当 java 使用 kotlin 编写的库时，是无法阻止 java 直接使用接口实现的.