谈谈:你在工作中用到的设计模式!
写之前,我先抛一道面试题,我们一起思考思考!(本篇对已工作或即将如职场的都是不错的巩固与积累,也强烈建议跟着操作一遍,你会有不一样的收获!)
好了,别想了(哈哈哈),我们往下看
嘿嘿,你正准备放松一下,这时面试官有往下追问了:能说下具体的细节吗?
问到这一步,我们就要根据代码来说了,这段实战代码若初看不怎么会的,我推荐手敲一遍!!!(看看我都敲三个感叹号了啊)
实战案例分析:(案例结合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框架的基础上,采用模版方法,策略模式,工厂方法模式实现了我们子啊工作一个使用的场景!~
完结撒花!~