策略模式(strategy),是一种行为性模型,行为型模式关注的是系统中对象之间的相互交互,解决系统在运行时对象之间的相互通信和协作,进一步明确对象的职责。相比来说,创建型模式关注对象的创建过程,结构型模式关注对象和类的组合关系。
模式的职责
一些情况中,可能对具体选用那个方式,要根据实际情况来确定。这个时候,可以采用策略模式。
模式的必要性
其实这种情况用简单的if,else就可以实现了,那么为什么还要有策略模式呢?因为如果只是简单的if,else的话,对于比较复杂的逻辑会难以管理和维护,如果要新增类型也需要频繁修改同一段代码,不符合开闭原则。
模式的实现
public interface Strategy {
double finalprice(
double price);
}
class NormalClient implements Strategy{
public double finalprice(
double price) {
return price;
}
}
class VipClient implements Strategy{
public double finalprice(
double price) {
return price*
0.95;
}
}
class SuperVipClient implements Strategy{
public double finalprice(
double price) {
return price*
0.85;
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
super();
this.strategy = strategy;
}
public void setStrategy(Strategy strategy){
this.strategy = strategy;
}
public void price(
double price){
System.out.println(
""+strategy.finalprice(price));
}
}
public class Client {
public static void main(String[] args) {
Strategy s =
new NormalClient();
Context c =
new Context(s);
c.price(
998);
}
}
策略模式的注入有构造方法注入,set方法注入(其实也可以写其他方法注入),也能用配置文件注入,如果有框架支持,也可以像spring那样有注释注入。不同的注入对于不同的调用方法。
模式的本质
分离算法,选择实现
模式的实现的场景
JAVASE中GUI编程中,布局管理 Spring框架黄总,Resource接口,资源访问策略 Java,servlet.http.HttpServlet#service()
转载请注明原文地址: https://ju.6miu.com/read-1295824.html