15-TypeScript策略模式

Posted 曹剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15-TypeScript策略模式相关的知识,希望对你有一定的参考价值。

在前面的简单工厂模式中,通常将每个类、接口定义到不同的文件中。在面向对象开发思想中有一个重要的原则就是封装变化点,在实际操作过程中,

通常被调用方的代码不要去更改,而是增加,这是面向对象的开闭原则。在简单工厂模式中存在一个问题,就是简单工厂类需要知道不同具体类的实现,如果现在多了一种算法比如乘法,

我们可以增加一个乘法类,但是需要在工厂类中修改代码,判断如果传入的是"*",则需要实例化另一个乘法类,这样就不太符合面向对象的开发思想。

通过使用策略模式,可以有效避免上述的问题,而将具体要实例化哪个算法类交给调用方负责。

interface ICompute{
    Compute(a:number,b:number):number;
}

class AddComputer1 implements ICompute{
    public Compute(a:number,b:number):number{
        return a+b;
    }
}

class SubComputer1 implements ICompute{
    public Compute(a:number,b:number):number{
        return a-b;
    }
}

class ComputeStratge{
    public compute(icompute:ICompute,a:number,b:number):number{
        return icompute.Compute(a,b);
    }
}

var computestatge=new ComputeStratge();
var result=computestatge.compute(new AddComputer1(),100,200);
console.log(result);

欢迎加入QQ群讨论:573336726

以上是关于15-TypeScript策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

用于从 cloudkit 检索单列的代码模式/片段

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式