定义
定义:一个类的行为或其算法可以在运行时更改。
个人定义:同一场景内,持有相同行为的对象切换后,行为的执行结果会发生变化
图
代码实现
需求1:同一公司内的不同角色员工进行工作
public interface Strategy {
/**
工作
*/
void work();
}
public class NormalImployee implements Strategy{
@Override
public void work(){
System.out.println("敲代码");
}
}
public class PM implements Strategy{
@Override
public void work(){
System.out.println("项目管理");
}
}
public class CEO implements Strategy{
@Override
public void work(){
System.out.println("公司管理");
}
}
/**
不同角色员工进入同一场景,进行工作
*/
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(){
return strategy.work();
}
}
public class MainClass {
public static void main(String[] args) {
Context context = new Context(new PM());
context.work();
}
}
需求2:加密
public interface Strategy {
//加密
public void encrypt();
}
public class MD5Strategy implements Strategy{
public void encrypt() {
System.out.println("执行MD5加密");
}
}
public class SHA1Strategy implements Strategy{
public void encrypt() {
System.out.println("执行SHA1加密");
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void encrypt() {
this.strategy.encrypt();
}
}
public class MainClass {
public static void main(String[] args) {
// Strategy stra = new SHA1Strategy();
// stra.encrypt();
Context context = new Context(new MD5Strategy());
context.encrypt();
}
}
}