单一责任原则 C.

我们先来解决这个问题。看看下面的代码:

public class BankAccount
{             
    public BankAccount()  {}

    public string AccountNumber { get; set; }
    public decimal AccountBalance { get; set; }

    public decimal CalculateInterest()
    {
        // Code to calculate Interest
    }
}

这里, BankAccount 类包含帐户的属性,还计算帐户的利息。现在看看我们从业务收到的一些变更请求:

  1. 请添加新的 Property AccountHolderName
  2. 引入了一些新规则来计算利息。

这是完全不同类型的变更请求。一个是改变功能; 其他人正在影响功能。我们有两种不同类型的理由来改变一个类。这违反了单一责任原则。

现在让我们尝试实施 SRP 来解决这种违规行为。看下面的代码:

public interface IBankAccount
{
    string AccountNumber { get; set; }
    decimal AccountBalance { get; set; }
}

public interface IInterstCalculator
{
    decimal CalculateInterest();
}

public class BankAccount : IBankAccount
{
    public string AccountNumber { get; set; }
    public decimal AccountBalance { get; set; }
}

public class InterstCalculator : IInterstCalculator
{
    public decimal CalculateInterest(IBankAccount account)
    {
        // Write your logic here
        return 1000;
    }
}

现在我们的 BankAccount 类只负责银行账户的属性。如果我们想为计算利息添加任何新的业务规则,我们不需要更改 BankAccount 类。 ** ****

而且,如果需要添加新的 Property AccountHolderNameInterestCalculator 类也不需要更改。所以这是单一责任原则实施。 ** **

我们还使用 Interfaces 在 InterestCalculator 和 BankAccount 类之间进行通信。这将有助于我们管理类之间的依赖关系。