当前位置: 首页 > news >正文

Java/Golang:活用interface,增加程序扩展性

场景

在paas中间件众多的场景下,做一款用于巡检多个paas组件健康状态的工具。工具的编写需要具备一定的扩展性,便于后续新增某个paas组件巡检的功能。

管理多个paas组件,需要方便扩展新增。

思路

使用面向对象编程思想,首先对巡检任务CronJob进行抽象(interface),抽象出JobManager框架程序,在对paas组件巡检功能编程中,仅需要实现特定的paas组件的CronJob,增加到Job列表中统一处理。

实现

假定paas组件有两个:abase、redis

  • 首先定义、抽象CronJob和JobManager
package jobimport ("fmt"
)//用于定义任务需要实现的方法
type CronJob interface {Run()JobName() string
}//任务管理器
type JobManager struct {Jobs []CronJob
}func NewJobManager() *JobManager {return &JobManager{}
}//注册job
func (jm *JobManager) RegisterJob(job CronJob) {jm.Jobs = append(jm.Jobs, job)
}//job执行
func (jm *JobManager) Start() {for _, job := range jm.Jobs {fmt.Println("job name:", job.JobName())job.Run()}
}
  • paas组件实现

abase.go

package jobimport ("fmt"
)type AbaseJob struct{}func (a *AbaseJob) Run() {fmt.Println("abase job running!!!")
}func (a *AbaseJob) JobName() string {return "abase job"
}

redis.go

package jobimport ("fmt"
)type RedisJob struct{}func (a *RedisJob) Run() {fmt.Println("redis job running!!!")
}func (a *RedisJob) JobName() string {return "redis job"
}
  • 整体调用
package mainimport ("demo_jobmanager/job"
)func main() {//实例化jm := job.NewJobManager()//注册jobjm.RegisterJob(&job.AbaseJob{})jm.RegisterJob(&job.RedisJob{})//执行jm.Start()
}
http://www.lryc.cn/news/365916.html

相关文章:

  • SQL语句练习每日5题(四)
  • Java排序算法汇总篇,八种排序算法
  • R语言探索与分析20-北京市气温预测分析
  • 2024年安全现状报告
  • OV通配符ssl证书是什么
  • Selenium三种等待方式的使用!
  • websockets怎么工作的呢?
  • 栈 数组和链表实现
  • 如何备份和恢复华为手机?
  • 微波电路S参数测量实验方案
  • SpringTask Cron表达式
  • docker与docker-compose安装
  • 跨境反向海淘系统:业务流程解析与未来发展展望
  • Python语言字母:深度解析与魅力探索
  • 基于JSP技术的社区疫情防控管理信息系统
  • 区间预测 | Matlab实现QRBiTCN分位数回归双向时间卷积神经网络注意力机制时序区间预测
  • Spring MVC中,一个HTTP请求可能会被多个Handler处理
  • Vue3 时间格式化
  • SVN中trunk,branch,tag
  • React ahooks库和React Query库使用场景分析
  • 国产AI大模型哪家强?从投资者角度简单横评5款大模型!
  • uc/OS-III多任务程序
  • 6月13日在线研讨会 | 多产品多流程多团队的ALM选择方案
  • Maven使用${revision}实现多模块版本统一管理及注意事项
  • vue2 bug求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)
  • C++的“引用”是条寄生虫
  • 人体感应提醒 大声公+微波模块
  • 正确的功能可将热晶体管风速计线性化
  • 小程序集arcgis地图显示自定义坐标的功能实现记录!(学习笔记)
  • 谷歌医疗大模型登Nature,Med-PaLM重磅揭秘!AI医生成绩比肩人类