天天看點

大話java設計模式-政策模式政策模式

政策模式

了解政策其實很簡單先看下邊的例子:

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());
    }
}

           
大話java設計模式-政策模式政策模式

把上邊優化後的測試類測試下就知道了。