typescript策略模式
时间: 2024-01-24 17:15:29 浏览: 30
策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在TypeScript中,可以使用类和多态性来实现策略模式。
以下是一个使用TypeScript实现策略模式的示例:
```typescript
// 定义一个策略接口
interface FlyStrategy {
fly(): void;
}
// 实现具体的飞行策略类
class FlyWithWings implements FlyStrategy {
fly() {
console.log("用翅膀飞行");
}
}
class FlyNoWay implements FlyStrategy {
fly() {
console.log("无法飞行");
}
}
// 定义一个鸭子类
class Duck {
private flyStrategy: FlyStrategy;
constructor(flyStrategy: FlyStrategy) {
this.flyStrategy = flyStrategy;
}
// 设置飞行策略
setFlyStrategy(flyStrategy: FlyStrategy) {
this.flyStrategy = flyStrategy;
}
// 执行飞行
performFly() {
this.flyStrategy.fly();
}
}
// 使用策略模式
const duck = new Duck(new FlyWithWings());
duck.performFly(); // 输出:用翅膀飞行
duck.setFlyStrategy(new FlyNoWay());
duck.performFly(); // 输出:无法飞行
```
在上面的示例中,我们定义了一个`FlyStrategy`接口,它包含一个`fly`方法。然后,我们实现了两个具体的飞行策略类`FlyWithWings`和`FlyNoWay`,它们分别实现了`FlyStrategy`接口。接下来,我们定义了一个`Duck`类,它包含一个`flyStrategy`属性,用于存储当前的飞行策略。`Duck`类还包含了`setFlyStrategy`和`performFly`方法,用于设置和执行飞行策略。
通过使用策略模式,我们可以在运行时选择不同的飞行策略,而不需要修改`Duck`类的代码。这样,我们可以实现算法的变化独立于使用算法的客户。