你的位置:亚洲日韩欧美人成黄瓜_好嗨呦直播app下载_大胆西西人体gogo_美女下面直流白水视频_人妻中出无码一区二区_最新婬乱小说午夜视频_无码艳妇乳肉豪妇荡乳 > 黑人特大亚洲女娇小 >


客厅抽象装饰画图片举个栗子咱们先看一个等闲的下单阻扰接口

发布日期:2022-09-23 05:52    点击次数:80


在公交车上体验高潮客厅抽象装饰画图片

 我也无须想象模式

好多人认为我方写的是业务代码,按照逻辑写下去,再把公用的方法抽出来复用就不错了,想象模式根蒂就没必要用,更没必要学。

一驱动的时代,我亦然这样想,直到我遭受。。。

举个栗子

咱们先看一个等闲的下单阻扰接口。

基本逻辑,参数安全阻扰,次数阻扰,规则阻扰,都通过,复返允许下单,淘气一个失败,复返对应的失败原因。

多层嵌套if写法

咱们平时多层嵌套if的写法

 

/**  * @author saier  * @date 2020/3/31 18:03  */ public class Order {     public Message interrupt1(){         return null;     }     public Message interrupt2(){         return null;     }     public Message interrupt3(){         return null;     }     public Message interrupt4(){         return null;     }     public Message interrupt5(){         return null;     }      public static void main(String[] args) {         Order order= new Order();         if(order.interrupt1().getResult() == 1){             if(order.interrupt2().getResult() == 1){                 if(order.interrupt3().getResult() == 1){                     if(order.interrupt4().getResult() == 1){                         if(order.interrupt5().getResult() == 1){                             System.out.println("success");                         }                     }                 }             }         }      } }  @Data class Message {     private int result;     private String msg; } 

颠倒处理逻辑

概况有些诈欺颠倒做逻辑,代码会浅易少许

 

/**  * @author saier  * @date 2020/3/31 18:03  */ public class Order2 {     public void interrupt1(){      }     public void interrupt2(){      }     public void interrupt3(){         //失败         throw new RuntimeException();     }     public void interrupt4(){         //失败         throw new RuntimeException();     }     public void interrupt5(){         //失败         throw new RuntimeException();     }      public static void main(String[] args) {         Order2 order2= new Order2();         try{             order2.interrupt1();             order2.interrupt2();             order2.interrupt3();             order2.interrupt4();             order2.interrupt5();             System.out.println("success");         }catch (RuntimeException e){             System.out.println("fail");         }      } } 

一驱动,我就径直使用颠倒来做逻辑。但后续逻辑越来越复杂之后,也会出现一些问题。举例颠倒只可复返颠倒信息,不成复返更多的字段信息。

后头也钟情到,颠倒做逻辑,在阿里步调是膺惩的。

阿里代码步调 :

【强制】颠倒不要用来做过程限制,条目限制。

阐扬:颠倒想象的初志是解决时刻运行中的多样不测情况,且颠倒的处理后果比条目判断风光要低好多。

更紧迫的是,代码可读性太差了,随时一个方法的颠倒抛出来,还要接头代码本人的颠倒。

没更好的方针, 这里只可接头想象模式了

若何改,会使代码的可读性高,膨胀性好?

在共事的教唆下,一刹想起了想象模式!

咱们但愿达到的规划

代码莫得这样多if else嵌套,可读性高 如若新增新的阻扰逻辑浅易便捷,不影响底本的逻辑,膨胀性好 不错很便捷地调理阻扰逻辑规则,低耦合

拖累链模式

在这种场景下,止境合乎拖累链模式。(什么场景使用什么想象模式,这就需要平时有聚集,默契多样想象模式的基本使用)

拖累链,顾名思义,中文字幕Av不卡无码等于用来处理有关事务拖累的一条实行链,实行链上有多个节点,每个节点都有契机(条目匹配)处理申请事务,如若某个节点处理结束就不错凭证履行业务需求传递给下一个节点延续处理概况复返处理完毕。

最初,建树过滤器的空洞类

 

public abstract class AbstractFilter {      private AbstractFilter nextFilter;      /**      * 拖累链的下一个元素      */     public void setNextFilter(AbstractFilter nextFilter){         this.nextFilter = nextFilter;     }       public AbstractFilter getLastFilter(){         if(this.nextFilter != null){             return this.nextFilter.getLastFilter();         }else{             return this;         }     }      public void filter(FilterRequest filterRequest, Response response){         doFilter(filterRequest,response);         if(response.isFilterNext() && nextFilter != null){             nextFilter.filter(filterRequest,response);         }     }      /**      * 具体阻扰逻辑      */     public abstract void doFilter(FilterRequest filterRequest, Response response);      /**      * 凭证阻扰落幕做处理      */     public void exec(FilterRequest filterRequest, Response response){     } } 

过滤器的完结类

 

@Component @Order(5) public class CheckParamFilter1 extends AbstractFilter {     @Override     public void doFilter(FilterRequest filterRequest, Response response) {      } }  @Component @Order(10) public class CheckParamFilter2 extends AbstractFilter {     @Override     public void doFilter(FilterRequest filterRequest, Response response) {      } } 

使用Order注解,笃定过滤器的规则,后续在spring注入的时代,会有奇效

//诈欺spring的自动注入机制 @Autowired List<AbstractFilter> abstractFilterList;  private AbstractFilter firstFilter;  //spring注入后自动实行 @PostConstruct public void initializeChainFilter(){     //把通盘调用的逻辑注入到拖累链,按照Order排序,越小优先级越高     for(int i = 0;i<abstractFilterList.size();i++){         if(i == 0){             firstFilter = abstractFilterList.get(i);         }else{             firstFilter.getLastFilter().setNextFilter(abstractFilterList.get(i));         }     } }  //径直使用 public Response exec(){     firstFilter.filter(filterRequest, response);     return response; } 

使用想象模式的平允

看下使用拖累链模式后,有什么平允!

新增阻扰逻辑,只需要再完结一个AbstractFilter类即可 修改阻扰规则,只需要修改Order注解的大小,越小,优先级越高 代码明晰,通盘处理逻辑下沉到完结类中

使用想象模式的污点

做到了低耦合,高膨胀。但也带来了一些不好的地点

逻辑更复杂,用了链式等数据结构,要肃穆单例的问题,不成换取使用 类数目激增,一个阻扰器就一个类

临了小结一下

不是什么地点都合乎使用想象模式,如若逻辑浅易,你硬要使用想象模式,只会带来结构上的复杂,天下不错按照天下的业务场景来使用。

对于作家:南山狮:理工男,7年互联网电商系统设备阐扬注解,学问共享限制探索小白。



    热点资讯

    相关资讯