在日常開發中,我們常常會遇到乙個介面有多個實現類時,需要選擇合適的實現類的情況。
最簡單的方法是寫乙個選擇器,用if-else來判斷使用哪個實現類的例項,比如:
if(條件1)else if(條件2)
然而這種方法不符合開閉原則(ocp),如果再新增乙個實現類,那麼選擇器的**也需要再加乙個else if。
這種選擇器使用了策略模式,並且利用了spring的自動注入特性。
首先,我們需要提供4個工具類:
public inte***ce matchingbean
public inte***ce myfactorylist, k> extends list
public class myfactoryarraylist, k> extends arraylistimplements myfactorylist, serializable
}return null;
}@override
public listgetbeanlist(k factor)
}return this;
}}
public class myfactorylisteditor extends customcollectioneditor
}
假設我們有個購物介面,有**和京東兩個實現。
那麼就讓購物介面繼承matchingbean,**如下:
public inte***ce buyservice extends matchingbean
然後在實現類裡實現matching方法,**如下:
@service
public class jingdongservice implements buyservice
@override
public boolean matching(string factor)
}
@service
public class taobaoservice implements buyservice
@override
public boolean matching(string factor)
}
最後,咱們寫個測試類,看下選擇器的使用方法:
@runwith(springrunner.class)
@springboottest
public class testmybeanutil
}
實現檔案拖放的一種簡潔方法
1 自已編寫專用的類,程式複雜 維護麻煩 2 必須要將檔案拖到對話方塊中的編輯控制項上,拖動的檔名才被接受,而標準的windows程式只須將檔案拖放到對話方塊即可被接受 3 只能接受乙個拖放的檔案。本文要介紹的這種方法只須呼叫乙個windows api函式dragqueryfile即可實現檔案的拖放...
車羊問題的一種簡潔證明
在csdn上看到一篇關於車羊問題的文章 我編了個程式證明了結論,然後給出了一種簡潔的數學證明。如下 車羊問題 car and goats problem 又叫蒙提霍爾問題 monty hall problem 或三門問題。這個問題 於美國電視娛樂節目let s make a deal,問題的名字則來...
php 使用post,get的一種簡潔方式
近來看到了乙個巧妙地方法,原理是 var a var b var a test 則echo var b 為 te 因此可以這樣處理 複製 如下 foreach array cookie post get as request www.cppcns.com key addslashes value 這...