用設計模式消除大量if else

2021-10-01 04:47:24 字數 1481 閱讀 8244

先來看張經典的啊都給神圖,感受下大量if-else的「魅力」

有時候業務上的拖拉可能要求我去寫出如上的多層if-else巢狀**,如果你碰上了乙個對團隊成員要求相對比較嚴格的主管的話,那麼恭喜你,死定了……脾氣比較爆的大佬可能直接就跟你說要麼解決上面問題,要麼收拾包袱滾蛋了。

public class coffee 

if(type==2)

if(type==3)

return 21;}}

分別定義這幾個咖啡

public inte***ce coffee
@override

public int getprice()

}

public class americanocafe implements coffee 

}

public class latte implements coffee 

}

那就可以根據type來new相應物件了,但實質還沒有解決上述多if問題。

public class coffeefactory 

public static void register(int type,coffee coffee)

}

此處會發現,每個具體的coffee必須在初始化的時候將自身註冊到這個對應的coffeemap中,否則在buildcoffee的時候會返回null,那該如何修改呢?看下面**

@component

@override

public int getprice()

@override

public void afterpropertiesset() throws exception

}

@component

public class americanocafe implements coffee, initializingbean

@override

public void afterpropertiesset() throws exception

}

@component

public class latte implements coffee, initializingbean

@override

public void afterpropertiesset() throws exception

}

之所以要實現initializingbean介面是為了spring初始化的時候,建立對應的coffee bean的時候將其註冊到工廠map中

使用策略模式消除if else

最近專案中遇到如下情況 有乙個操作叫平帳,然後要對多個不同的款項進行平帳,目測有72種。然後平帳的方法只有乙個,在那個平帳方法裡面,判斷是哪一種款項,然後不同的款項有不同的處理邏輯。if 款項a if 款項b if 款項c 這個就很可怕了。因此使用策略模式來消除掉if else。先看使用策略模式之後...

策略模式 Spring消除if else

為了消除if else 最近想把訊息服務的幾種下發方式通過策略模式整理一下,因為用的spring,直接上 public inte ce imessageservice component public class iemailserviceimpl implements imessageservic...

策略模式優化大量if else

在 編寫的個過程中難免會碰到使用到if else的情況,太多的if else會使 變的臃腫並且難以理解,然後想到了之前寫策略模式是可以對它進行優化的,的規範和易懂性我認為對乙個優秀程式設計師來說是必要的。平常經常碰到的 author cjd description 使用if.else臃腫的 retu...