本次分享下设计模式之–策略模式
策略模式(Strategy Pattern)是设计模式中的一种行为型模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户。这种模式涉及到三个角色:
策略(Strategy)接口:定义所有支持的算法的公共接口。
具体策略(Concrete Strategy)类:实现策略接口的具体算法。
上下文(Context)类:接受客户的请求,随后将请求委托给策略对象。
以下是策略模式的一个简单Java实现示例:
// 策略接口
public interface Strategy {void execute();
}// 具体策略类A
public class ConcreteStrategyA implements Strategy {@Overridepublic void execute() {System.out.println("Executing strategy A");}
}// 具体策略类B
public class ConcreteStrategyB implements Strategy {@Overridepublic void execute() {System.out.println("Executing strategy B");}
}// 上下文类
public class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy = strategy;}public void setStrategy(Strategy strategy) {this.strategy = strategy;}public void executeStrategy() {strategy.execute();}
}// 客户端代码
public class Client {public static void main(String[] args) {Context context = new Context(new ConcreteStrategyA());context.executeStrategy(); // 执行策略Acontext.setStrategy(new ConcreteStrategyB());context.executeStrategy(); // 执行策略B}
}
在这个示例中,Strategy是一个策略接口,ConcreteStrategyA和ConcreteStrategyB是实现了Strategy接口的具体策略类。Context类持有一个Strategy类型的引用,可以指向任何策略对象。Client类中创建了一个Context对象,并分别设置为ConcreteStrategyA和ConcreteStrategyB,展示了策略模式可以在运行时动态改变对象的行为。
策略模式的主要优点包括:
算法可以独立于使用它们的客户端变化。
从客户端代码中分离算法,使算法的变化不会影响到客户端代码。
可以轻易地引入新的策略,而无需修改客户端代码或策略类。
完结,撒花!求赞求关注! 有问题可威:c_-j_-c