自己做网站的优势,wordpress 使用自己的表,南宁seo公司哪家好,WordPress背景音乐6场景
在paas中间件众多的场景下#xff0c;做一款用于巡检多个paas组件健康状态的工具。工具的编写需要具备一定的扩展性#xff0c;便于后续新增某个paas组件巡检的功能。
管理多个paas组件#xff0c;需要方便扩展新增。
思路
使用面向对象编程思想#xff0c;首先对…场景
在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()
}