政策模式
了解政策其實很簡單先看下邊的例子:
public static void listTest(List<Integer> list,String str){
if ("1".equals(str)){
System.out.println(list.toString());
}else if ("2".equals(str)){
System.out.println(list.size());
}else {
System.out.println(list.hashCode());
}
}
由上邊的代碼可知道出現了if,實際開發中有時候會遇到很多的if語句覺得看着不舒服這時候可以采用政策模式來解決。
以下是優化的政策模式優化後的代碼:
public interface ListInterface {
void testList();
}
public class RouteList implements ListInterface {
private ListInterface listInterface;
public RouteList(List list,String str){
switch (str){
case "1":
listInterface=new ToStringList(list);
break;
case "2":
listInterface=new SizeList(list);
break;
default:
listInterface=new HashCodeList(list);
}
}
@Override
public void testList() {
listInterface.testList();
}
}
public class ToStringList implements ListInterface {
private List list;
public ToStringList(List list){
this.list=list;
}
@Override
public void testList() {
System.out.println(list.toString());
}
}
public class SizeList implements ListInterface {
private List list;
public SizeList(List list){
this.list=list;
}
@Override
public void testList() {
System.out.println(list.size());
}
}
public class ToStringList implements ListInterface {
private List list;
public ToStringList(List list){
this.list=list;
}
@Override
public void testList() {
System.out.println(list.toString());
}
}
把上邊優化後的測試類測試下就知道了。