设计模式之策略模式-- 运维系统的回调类设计

691 阅读1分钟

设计模式之策略模式-- 运维系统的回调类设计

基本原则

  • 动静分离

  • 多用组合,少用继承

  • 面向接口编程,而不是面向实现

接口和类的功能描述

  • CallbackFlow: 抽象一个接口,这是一个多态接口,用于变化部分,因为更新的服务类型不一样,流程不一样。
  • CallbackHandler: 回调处理类,这个类主要是处理系统请求的回调,会委托CallbackFlow类取到更新流程的数据,并作逻辑处理得出当前执行的阶段最后返回给用户。

接口、类的实现和伪代码

  • 获取更新流程的抽象接口
package VoneCallback;

import java.util.HashMap;
public interface CallbackFlow{
    //获取stage阶段数
    public int getStagecount();
    //获取stage流程代码和阶段描述
    public String getFlowDesc();
    //获取流程是否变更
    public String getChangeStatus();
    //设置流程变更状态
    public void setChangeStatus();
}

  • 获取k8s服务更新流程的具体实现

    package VoneCallback;
    import java.util.HashMap;
    public class CallbackK8sService implements CallbackFlow{
    
    
        @Override
        public String getChangeStatus() {
            //从redis 获取数据变更标识
            return Status;
        }
    
        @Override
        public String getFlowDesc() {
            String Status =  this.getChangeStatus();
            if (status == "True"){
                // 如果数据标识为true获取数据
                res = "get data from redis"
                this.setChangeStatus(key);
                return res;
            }
        }
    
        @Override
        public void setChangeStatus(String key) {
            redis.set(key,"false");
        }
    
        @Override
        public int getStagecount(String res) {
            return stagecount;
        }
    }
    
    
  • 获取主机类服务

    package VoneCallback;
    
    public class CallbackHostService implements CallbackFlow{
        // the type of hosts service 
        // to do
    }
    
    
  • 回调处理类

package VoneCallback;

public class CallbackHandler {
    CallbackFlow callbackflow;
    public CallbackHandler(){
        callbackflow = new CallbackK8sService();
    }


   public String getFlowData(){
        String data = callbackflow.getFlowDesc();
   }
   
   public String getResStatus(){
        String Flowdata = getFlowData();
        .....
       return ResStatus;
   }
}