0
点赞
收藏
分享

微信扫一扫

灾后重建中GIS技术的关键作用与案例分析

山竹山竹px 2024-02-21 阅读 11
编辑器

谈谈:你在工作中用到的设计模式!


在这里插入图片描述

写之前,我先抛一道面试题,我们一起思考思考!(本篇对已工作或即将如职场的都是不错的巩固与积累,也强烈建议跟着操作一遍,你会有不一样的收获!)

好了,别想了(哈哈哈),我们往下看

嘿嘿,你正准备放松一下,这时面试官有往下追问了:能说下具体的细节吗?

问到这一步,我们就要根据代码来说了,这段实战代码若初看不怎么会的,我推荐手敲一遍!!!(看看我都敲三个感叹号了啊)

实战案例分析:(案例结合Spring框架实现)

1.首先:定义一个接口

/**
 *子模块: 高维炫彩眼镜支付服务
*/
public interface  GlassesPayService{
    //定义一个支付方法
    public void pay(GlassesPayRequest glassesPayRequest);
}

/**
 *此类定义请求的方法
*/
public class GlassesPayRequest{
    
}

2.定义抽象服务类

//实现接口,目的实现pay方法
public  abstract  class  AbstractGlassesPayService  implements  GlassesPayService{
    //这个里面很重要,pay定义了整体的支付逻辑(也就是我们上面所说的大框架)
    @Override
     public void pay(GlassesPayRequest glassesPayRequest){
         //支付前的检查
         preCheck(glassesPayRequest);
         //核心逻辑,抽象再此(For wechat,Alipay....等具体业务实现,留给具体的实现类处理)
         doPay(glassesPayRequest);
         //支付后处理
         postHandle(glassesPayRequest);
     }
    
    //抽象方法,子类需要去实现的
    public abstract void doPay(GlassesPayRequest glassesPayRequest);
    
    
    private void preCheck(GlassesPayRequest glassesPayRequest){
        //这里面是支付前的检查,保障支付的安全,防止盗刷
        ...
    } 
    
    private void postHandle(GlassesPayRequest glassesPayRequest){
        //这里面是支付成功后的处理,比如积分啦,还有其他的抽奖等巴拉巴拉
        ...
    }
    
}

3.定义策略服务

@Service
public  class  GlassesAliPayService  extends AbstractGlassesPayService{
    //实现方法
    @Override
    public void doPay(GlassesPayRequest glassesPayRequest){
        //AliPay  支付逻辑
        
    }
}
@Service
public  class  GlassesWeCahtPayService  extends AbstractGlassesPayService{
    //实现方法
    @Override
    public void doPay(GlassesPayRequest glassesPayRequest){
         //WeChat  支付逻辑
    }
}
@Service
public  class  GlassesBankPayService  extends AbstractGlassesPayService{
    //实现方法
    @Override
    public void doPay(GlassesPayRequest glassesPayRequest){
         //央行卡  支付逻辑
    }
}

4.定义工厂

@Service
public  class  GlassesPayServiceFactory{
    
    
    @Autowired
    public Map<String,GlassesPayService> glassessPayServiceMap=new ConcurrentHashMap<>();
    
    public GlassesPayService getGlassesPayService(String glassesPayChannel){
        //eg: AliPay + "PayService" -> AliPayPayService
        return  glassessPayServiceMap.get(glassesPayChannel+"PayService");
    }
}

好了,到此我们在Spring框架的基础上,采用模版方法,策略模式,工厂方法模式实现了我们子啊工作一个使用的场景!~

完结撒花!~

举报

相关推荐

0 条评论