通過列舉和工廠模式解決if else語句

2021-10-24 23:34:44 字數 1693 閱讀 1758

一、介面

public inte***ce dothing
二、列舉類

public enum enumthing implements dothing 

},role1

},role2

}}

三、呼叫

enumthing.valueof("admin").dothing();
工廠模式解決if-else「分支過多」問題

不同分支做不同的事情,很明顯就提供了使用工廠模式的契機,我們只需要將不同情況單獨定義好,然後去工廠類裡面聚合即可。

首先,針對不同的角色,可以單獨定義其業務類:

//系統管理員(有a操作許可權)

publicclassrootadminroleimplementsrole0peration

@override

publicstring op()

}

//訂單管理員(有b操作許可權)

publicclassorderadminroleimplementsroleoperation

@override

publicstring op()

}

//普通使用者(有c操作許可權)

publicclassnormalroleimplementsroleoperation

@override

publicstring op()

}

接下來再寫乙個工廠類rolefactory對上面不同角色進行聚合:

publicclassrolefactory

pub1icstaticroleoperation getop( string rolename )

}

接下來借助上面這個工廠,業務**呼叫也只需一行**, if/else同樣被消除了:

publicclassjudgerole

}

這樣的話以後想擴充套件條件也很容易,只需要增加新**,而不需要動以前的業務**,非常符合「開閉原則」。

單例模式 多例模式 列舉 工廠模式

1.單例設計模式作用讓乙個類,最最最最多只能有乙個物件2.單例設計模式實現步驟a.構造方法私有化 b.我們要在類內部,建立乙個靜態的該類物件 c.我們要提供乙個靜態方法,使用者可以通過靜態方法獲取剛剛我們準備的那個物件3 單例設計模式的型別a.餓漢式單例 編寫靜態物件時,直接通過new 類名 賦值b...

靜態工廠模式 工廠模式 抽象工廠模式 解決的問題

提前總結 工廠模式的主要作用是封裝變化,把經常變化的地方封裝成乙個類。這樣可以避免重複,方便維護。使客戶 和實現 解耦,客戶在例項化物件時,依賴於介面,而不是具體的實現類。問題的引出 假如你有一家披薩店,你只會做一種披薩 public class pizzastore 後來你學會做多種披薩可供選擇,...

簡單工廠模式和工廠模式

在對比兩種模式之前,首先需要學習 開放 封閉原則。在以前學習的過程中,聽說過很多次,編寫程式要遵循開閉原則。在做專案的過程中,因為需求的新增,經常會更新軟體。更新軟體,就要設計到修改 了。在物件導向的程式設計中,經常會寫類。如果因為新增需求,去修改已經完成的類。那麼他是不符合開閉原則的。新增需求,應...