一種簡潔的Spring Bean選擇器模式

2021-10-01 19:15:21 字數 1405 閱讀 2533

在日常開發中,我們常常會遇到乙個介面有多個實現類時,需要選擇合適的實現類的情況。

最簡單的方法是寫乙個選擇器,用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 這...