目的
解决很多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();
}
}