if else 工厂模式_没有IF-ELSE的工厂
生活随笔
收集整理的這篇文章主要介紹了
if else 工厂模式_没有IF-ELSE的工厂
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
if else 工廠模式
面向對象語言具有非常強大的多態性功能,用于刪除代碼中的if / else或切換大小寫。
沒有條件的代碼易于閱讀。 在某些地方必須放置它們,其中一個示例是Factory / ServiceProvider類。
我敢肯定,您已經看到IF-ELSEIF的工廠課程在不斷擴大。
在此博客中,我將分享一些技巧,您可以使用這些技巧消除工廠課堂上的情況。
我將使用以下代碼段作為示例:
反射
這是您要刪除條件時想到的第一件事。 您會感到框架開發人員的感覺!
public static Validator newInstance(String validatorClass) {return Class.forName(validatorClass).newInstance(); }這看起來很簡單,但唯一的問題是調用者必須記住完全限定的類名,并且有時可能會出現問題。
地圖
映射可用于將實際的類實例映射到一些用戶友好的名稱:
Map<String, Validator> validators = new HashMap<String,Validator>(){{put("INT",new IntValidator());put("LOOKUPVALUE",new LookupValueValidator());put("DATE",new DateValidator());put("STRINGPATTERN",new StringPatternValidator());}};public Validator newInstance(String validatorType) {return validators.get(validatorType);}這看起來也很整潔,沒有反射的開銷。
枚舉
這很有趣:
enum ValidatorType {INT {public Validator create() {return new IntValidator();}},LOOKUPVALUE {public Validator create() {return new LookupValueValidator();}},DATE {public Validator create() {return new DateValidator();}};public Validator create() {return null;}}public Validator newInstance(ValidatorType validatorType) {return validatorType.create();}此方法使用enum方法刪除條件,問題之一是每種類型都需要Enum。 您不想創建大量的文件!
我個人喜歡這種方法。
結論
如果使用else或switch大小寫會使代碼難以理解,則應盡量避免使用它們。 應該使用語言構造來避免某些切換情況。
我們應該嘗試在沒有IF-ELSE的情況下進行編碼,這將迫使我們提出更好的解決方案。
翻譯自: https://www.javacodegeeks.com/2014/10/factory-without-if-else.html
if else 工廠模式
總結
以上是生活随笔為你收集整理的if else 工厂模式_没有IF-ELSE的工厂的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java代码初体验_第一次Java 8体
- 下一篇: 华为手机怎么控制电脑远程办公华为手机怎么