策略模式(Strategy Pattern)
半塘 2024/3/28 Java进阶
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
# 1、策略模式案例
定义一系列打电话的方式,设置哪个方式,就用哪个方式打电话,可以随时替换方式。
public interface Phone {
void call();
}
1
2
3
2
3
一系列算法
public class QqCall implements Phone{
@Override
public void call() {
System.out.println("QQ打电话");
}
}
public class WeixinCall implements Phone {
@Override
public void call() {
System.out.println("微信打电话");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
public class PhoneCall{
private Phone phone;
public void setPhoneType(Phone phone) {
this.phone = phone;
}
public void callPhone() {
if(phone==null){
System.out.println("拨打方式不能为空");
return;
}
phone.call();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ClientTest {
public static void main(String[] args) {
PhoneCall call = new PhoneCall();
call.setPhoneType(new WeixinCall());
call.callPhone();
call.setPhoneType(new QqCall());
call.callPhone();
}
}
/**
* 输出结果:
* 微信打电话
* QQ打电话
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17