我有两个计算公式,我想把它抽象出来,但是却不知道怎么处理这两个公式。公式如下:
V=A0*Math.Exp(-Ea/KT)*Math.Exp(Beta*V)*t*n
(其中:A0,Ea,Beta,n是常数,从数据库里读出来的;V,T,t是手工输入的,K是一个常量固定不变的)
F=D*A1+M*A2+E*A3 (其中:D,M,E是常数,从数据库读出来的,A1,A2,A3是用户手工输入的)
所有的参数都是double类型的。我按照策略模式,写了4个类,但是不知道怎么把这两个公式在里面去实现,希望能得到各位大虾的帮助,小弟在此多谢了。ComputeContext:
public class ComputeContext
    {
        ComputeModel compute;        public ComputeContext(ComputeModel c)
        {
            c = compute;
        }        public object Compute()
        {
            return null;
        }
    }ComputeModel:
public abstract class ComputeModel
    {
        public abstract object ExcuteExpression();
    }ComputeA:
public class ComputeA:ComputeModel
    {
        public override object ExcuteExpression()
        {
            throw new NotImplementedException();
        }
    }
ComputeB:
public class ComputeB:ComputeModel
    {
        public override object ExcuteExpression()
        {
            throw new NotImplementedException();
        }
    }

解决方案 »

  1.   

    ComputeContext:
    public class ComputeContext
        {
            ComputeModel compute;        compute = new ComputeA();
            compute.ExcuteExpression(double a,double b,double c)//ComputeA的方法
                   compute = new ComputeB();
            compute.ExcuteExpression(double a,double b,double c)//ComputeB的方法
        }ComputeModel:
    public abstract class ComputeModel
        {
            public abstract double ExcuteExpression(double a,double b,double c);
        }ComputeA:
    public class ComputeA:ComputeModel
        {
            public override double ExcuteExpression(double a,double b,double c);
            {
               Return A0*Math.Exp(-Ea/Kb)*Math.Exp(Beta*a)*c*n
            }
        }
    ComputeB:
    public class ComputeB:ComputeModel
        {
            public override double ExcuteExpression(double a,double b,double c);
            {
               Return D*a+M*b+E*c
            }
        }
    //常量自己加上就可以了