策略模式

29 阅读1分钟

目的

解决很多if else的情况
优点:可以避免多重判断条件,扩展性好
缺点:类会增多

RecycleView 选择布局为例

//假如RecyclerView 这样写
public class RecyclerView {

    private Layout layout;

    public void setLayout(Layout layout) {
        this.layout = layout;

        if(layout == "横着"){

        }else if(layout == "竖着"){

        }else if(layout=="格子"){

        }else{

        }  
        this.layout.doLayout();
    }
}

使用策略模式:

//排列的方式
public interface Layout {
    void doLayout();
}
//纵向排列
public class LinearLayout implements Layout{
    @Override
    public void doLayout() {
        System.out.println("LinearLayout");
    }
}
//网格排列
public class GridLayout implements Layout{
    @Override
    public void doLayout() {
        System.out.println("GridLayout");
    }
}
public class RecyclerView {
    private Layout layout;

    public void setLayout(Layout layout) {
        this.layout = layout;
        this.layout.doLayout();
    }
}