定义
一个类的行为可以有多种情况,可互相替换,属于行为型模式。
应用场景
1.有多个类似的类,但是他们的区别只是行为不一样
2.类内有大量的条件运算符,并且在同一算法的不同变体之间切换
优点
1.拓展性好
2.行为可以随意切换
缺点
1.策略类会增多
具体实例
1.RecyclerView选择布局方式
具体实现
行为接口
package com.elaine.testpattern.strategy;
/**
* 接口
* 表示能做一些事情
* <p>
* author: elaine
* date: 2021/4/22
*/
public interface Play {
public void doSomething();
}
行为实现类
跳舞行为
package com.elaine.testpattern.strategy;
import android.util.Log;
/**
* 继承Play接口
* 表示他能跳舞
* <p>
* author: elaine
* date: 2021/4/22
*/
public class Draw implements Play {
@Override
public void doSomething() {
Log.e("people====", "can draw.");
}
}
打球
package com.elaine.testpattern.strategy;
import android.util.Log;
/**
* 继承Play接口
* 表示他能打球
*
* author: elaine
* date: 2021/4/22
*/
public class PlayBall implements Play {
@Override
public void doSomething() {
Log.e("people====", "can play boll.");
}
}
人物类
package com.elaine.testpattern.strategy;
/**
* 定义一个人
*
* author: elaine
* date: 2021/4/22
*/
public class People {
private Play play;
public People(Play play) {
this.play = play;
}
public void play(){
play.doSomething();
}
}
运行代码
private void use() {
People people = new People(new Draw());
people.play();
people = new People(new PlayBall());
people.play();
}