首页 >> 手游攻略

switchcase?switchcase开关matlab

大家好,如果您还对switchcase不太了解,没有关系,今天就由本站为大家分享switchcase的知识,包括switchcase开关matlab的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

一、业务场景

一个接口需要根据前段传入的资产类型(assetType),调用不同的业务类中的资产明细方法(dealList),最初的做法就是最常见的switchcase或者if/else调用不同的service。相信每个程序员看到代码中大段的判断逻辑代码都会很头疼,刚好之前看过《重构既有代码》这本Java届的经典书,里面就明确指出switchcase违反开闭原则,可以用策略模式改写。

二、实现逻辑

1.定义统一资产接口,每种资产实现此接口,代码如下:

publicinterfaceAssetService{

IntegerassetType();

DealListResponsequeryDealList(IntegerassetId,Integerstatus,IntegersinceId,Integercount);

}

2.资产service实现接口,并重写assetType()和queryDealList()方法,代码如下:

@Service

publicclassCashServiceimplementsAssetService{

@Autowired

privateCashDetailServicecashDetailService;

@Override

publicIntegerassetType(){

returnAssetType.CASH.getId();

}

@Override

publicDealListResponsequeryDealList(IntegerassetId,Integerstatus,IntegersinceId,Integercount){

}

3.统一分发路由类,根据assetType调用对应的service,代码如下:

@Service

publicclassAssetServiceRoute{

@Resource

privateAssetService[]assetServices;

publicAssetServiceroute(IntegerassetType){

for(AssetServiceassetService:assetServices){

if(Objects.equals(assetType,assetService.assetType())){

returnassetService;

}

}

thrownewBusinessRuntimeException(GiveErrorCode.CHECK_PARAM_FAILED);

}

}

4.调用,代码如下;

publicDealListResponsedealList(IntegerassetType,IntegerassetId,Integerstatus,IntegersinceId,Integercount){

AssetServiceassetService=assetServiceRoute.route(assetType);

if(assetService==null){

thrownewBusinessRuntimeException(GiveErrorCode.INVALID_PARAMS);

}

returnassetService.queryDealList(assetId,status,sinceId,count);

}

三、代码分析

意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。

主要解决:在有多种算法相似的情况下,使用if…else所带来的复杂和难以维护(违反开闭原则)。

何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。

如何解决:将这些算法封装成一个一个的类,任意地替换。

关键代码:实现同一个接口。

switchcase和switchcase开关matlab的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!



本文由欣欣吧手游攻略栏目发布,感谢您对欣欣吧的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“switchcase?switchcase开关matlab

标签:
swiftkey?swiftkey输入法下载
« 上一篇 2023-10-12