我有两个计算公式,我想把它抽象出来,但是却不知道怎么处理这两个公式。公式如下:
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();
}
}
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();
}
}
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
}
}
//常量自己加上就可以了