zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [代码]codeforces 150c Smart Cheater
    [存档]Young Tableau
    [转载][毁童年]种太阳
    [转载]教练,我也想再要一个同桌
    静夜
    CodeProject每日精选: Applications
    设计模式 装饰模式(Decorator) 精选经验合集
    槟榔味儿办公室
    盗不盗非常盗
    月末之周末
  • 原文地址:https://www.cnblogs.com/malaoko/p/7603173.html
Copyright © 2011-2022 走看看