简单的策略模式Strategy演示

策略模式,即规则在变化之中,结果终归为一。

公司给员工计算工资,如有加班费,差旅费,每个月的生活补帖等等其它费用需要计算。
这个费的规则是不尽相同。

不管策略的规则怎样,终归需要计算出一个结果 工资:

可以定义一个接口:

interface IStrategy
    {
        double Cost(double basePay);
    }
Source Code

下面举个实例,每个月生活补帖:

class Living : IStrategy
    {
        public double Cost(double basePay)
        {
            return basePay * 400;
        }
    }
Source Code


差旅费,每天补助:

class Travelling : IStrategy
    {
        public double Cost(double basePay)
        {
            return basePay * 180;
        }
    }
Source Code

你将所有策略均需要实现策略接口。
这样子,计算工资时,把每一个项目进行计算:

 class Calc
    {
        IStrategy _strategy;

        public void CalcProject(IStrategy strategy)
        {
            this._strategy = strategy;
        }

        public void OutputResult(double basePay)
        {
            Console.WriteLine(_strategy.Cost(basePay));
        }
    }
Source Code

测试一下写好的程序:

原文地址:https://www.cnblogs.com/insus/p/8042372.html