可減少**中的if else 判斷,通過型別匹配需求
例如需求:需求定義多種上傳檔案模式,根據型別進行匹配上傳介面
1.首先定義乙個抽象介面
/**
* 上傳檔案
*/public
abstract
class
channel
2.實現抽象方法,兩種上傳方式
/**
* fast dfs 上傳檔案
*/public
class
fastdfschannel
extends
channel
}
/**
* oss 上傳檔案
*/public
class
osschannel
extends
channel
}
3.通過列舉進行型別匹配
public
enum channelenum
//匹配
public
static channel match
(string type)
}return null;
}public string gettype()
public
void
settype
(string type)
public channel getchannel()
public
void
setchannel
(channel channel)
}
4.測試結果
@test
public
void
storagetest2()
設計模式 策略者設計模式
策略者模式 策略這設計模式幫助構建的物件不必包含自身的邏輯,而是能夠根據需要利用其他物件中的演算法 能夠建立應用於基物件 由自包含演算法組成的可互換物件時,最佳的做法是使用策略者設計模式 class cdusesstrategy public function setstrategycontext ...
設計模式之策略者模式
策略者模式思想是乙個介面有多個實現類 把介面封裝在乙個封裝類中呼叫的時候建立實現類物件傳入封裝類中 用到了向上轉型 1 策略介面 策略介面 public inte ce istrategy2 實現策略的實現類 實現方法 public class backdoor implements istrate...
大話設計模式 策略者模式
在業務需求中,會有乙個相同的結果,但會用到不用的演算法。比如商場打折 結果都是給商品打折,但是打折的方式不一樣。演算法不一樣。所以就要用策略者模式,用類把這些演算法封裝起來,建立乙個簡單工廠,然後在用乙個context類來與客戶端做交流。如 package effective.strategist ...