针对项目中, 相同的流程业务进行重构, 使用 Go 来简单模拟 Java 中的接口, 实现类的方式进行重构.
分享一简单例子:
- package main
- // 模拟 java 中的接口, 实现类
- import "fmt"
- // 声明一个接口,
- type workthread interface {do(name string)
- }
- // 传入的 wt 的子类不同, do 方法执行的逻辑也不同
- func Handle(wt workthread, name string) {
- fmt.Println("-------- 执行 do 方法前的逻辑 ------")
- wt.do(name)
- fmt.Println("-------- 执行 do 方法后的逻辑 ------")
- }
- type SparkNode struct {
- ClusterName string
- }
- func (sn *SparkNode) do(name string) {
- fmt.Println("----hello, I'm spark node","\t", sn.ClusterName)
- }
- func (sn *KafkaNode) do(name string) {
- fmt.Println("----hello, I'm kafka node\t", sn.ClusterName)
- }
- type KafkaNode struct {
- ClusterName string
- }
- func main() {
- sparkNode := &SparkNode{
- ClusterName: "k8s",
- }
- kafkaNode := &KafkaNode{
- ClusterName: "kafka-node",
- }
- Handle(sparkNode, "111")
- Handle(kafkaNode, "222")
- }
来源: http://www.bubuko.com/infodetail-2637107.html