gpt4 book ai didi

c# - 需要接口(interface)方面的建议

转载 作者:太空狗 更新时间:2023-10-29 19:47:23 26 4
gpt4 key购买 nike

我只需要一些关于我正在尝试解决的问题的反馈...

这里是问题的描述:

我公司销售一些客户可以在特定时间段内付款的产品。客户分为现有客户或新客户。为了让客户购买产品,我们会检查信用度,有时会要求客户存入 margin , margin 可以退还。有些客户在我们这里有良好的付款记录,因此我们不需要向他们收取 margin 。为了实现评估,我设计了如下解决方案:

public interface ICreditAssessor
{
CreditAssessment Process();
Decimal CalculateBond(BondCalculator bc);
}

定义了两个实现此接口(interface)的类。

public class GoodClientProcessor : ICreditAssessor{
..... methods
}

public class OtherClientProcessor : ICreditAssessor{
..... methods
}

有一个类根据客户是否与我们有良好的付款历史返回适当的处理器。

此外,我还实现了一个 BondCalculator,如下所示:

public class BondCalculator
{
List<IRiskEvaluator> riskEvaluators;

public BondCalculator()
{
riskEvaluators = new List<IRiskEvaluator>();
}

public Decimal GetSuggestedBond()
{
Decimal riskAmount = 0;
foreach (IRiskEvaluator ire in riskEvaluators)
{
Decimal tempRisk = ire.EvaluateRisk();

if (tempRisk > riskAmount)
{
riskAmount = tempRisk;
}
}

return riskAmount;
}

public void SetRiskEvaluator(IRiskEvaluator re)
{
this.riskEvaluators.Add(re);
}
}

接口(interface)IRiskEvaluator如下:

public interface IRiskEvaluator
{
Decimal EvaluateRisk();
}

实现该接口(interface)的两个类如下:

public class FinancialRiskEvaluator : IRiskEvaluator
{
Decimal IRiskEvaluator.EvaluateRisk()
{
... calculate risk amount
}
}

public class ProductRiskEvaluator : IRiskEvaluator
{

Decimal IRiskEvaluator.EvaluateRisk()
{
... calculate risk amount
}
}

现在调用所有这些都是通过一个方法完成的。相关代码如下:

ICreditAssessor creditAssessor = CreditAssessorFactory.GetAssessor(somecriteria);
CreditAssessment assessment = creditAssessor.Process();
.
.
.
BondCalculator bc = new BondCalculator();
bc.SetRiskEvaluator(new FinancialRiskEvaluator(xmlResults));
bc.SetRiskEvaluator(new ProductRiskEvaluator(productCost));
creditCheckProcessor.CalculateBond(bc);

这个设计还可以吗,还是可以进一步改进?我看到的一个问题是,由于具有良好付款历史的客户不需要 margin ,我仍然需要调用方法 CalculateBond 并返回 0 作为 margin 值。这不知何故感觉不对。这可以以某种方式改进吗?欢迎提出任何意见/建议。

最佳答案

您可以添加一个 bool 值 BondRequired 属性来明确意图,而不是依赖于人们推断“零键没有多大意义;开发人员一定打算让结果代表根本没有键。 "

但是,我同意 Magnum 的观点,这已经比看起来需要的复杂了,因此向该类型添加更多成员可能不是最好的做法。

关于c# - 需要接口(interface)方面的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com