首页 > 其他分享 >模板方法

模板方法

时间:2022-11-17 18:57:29浏览次数:45  
标签:return Parameters 方法 Aggregate Operator data public 模板

模板方法例子如下,还是计算器为例。

   public enum Operator { Add,Sub,Mul,Div}
 public abstract class CalTemplate
    {
        public abstract Operator Operator { get; }
        public abstract List<decimal> Parameters { get; }
        public virtual decimal Calculate()
        {
            switch (Operator)
            {
                case Operator.Add:
                    return Parameters.Aggregate((x, y) => x + y);
                case Operator.Sub:
                    return Parameters.Aggregate((x, y) => x - y);
                case Operator.Mul:
                    return Parameters.Aggregate((x, y) => x * y);
                case Operator.Div:
                    return Parameters.Aggregate((x, y) => x / y);
                default:
                    throw new ArgumentNullException(nameof(Operator));
            }
        }
    }
    public class AddConcrete : CalTemplate
    {
        private List<decimal> _data;
        public AddConcrete(params decimal[] data)
        {
            _data = data.ToList();
        }
        public override Operator Operator => Operator.Add;

        public override List<decimal> Parameters => _data;
    }
        CalTemplate template = new AddConcrete(1, 2, 3, 4, 5);
            var result = template.Calculate();
            Trace.WriteLine(result);

上面只展示了add的实例。

总结:

这个例子跟策略模式很像,只不过策略模式是抽象了对象的行为,而这个模式是把一组抽象行为通过一定规则做了顺序执行。 都是行为模式,一个是一个对象的行为,一个是一个对象的N个行为做了排版吧。

到这里其实还可以联想到建造者模式,只不过一个是对对象的排版,一个是对行为的排版。

 

标签:return,Parameters,方法,Aggregate,Operator,data,public,模板
From: https://www.cnblogs.com/morec/p/16900458.html

相关文章