单一责任原则 C.
我们先来解决这个问题。看看下面的代码:
public class BankAccount
{
public BankAccount() {}
public string AccountNumber { get; set; }
public decimal AccountBalance { get; set; }
public decimal CalculateInterest()
{
// Code to calculate Interest
}
}
这里, BankAccount 类包含帐户的属性,还计算帐户的利息。现在看看我们从业务收到的一些变更请求:
- 请添加新的 Property AccountHolderName 。
- 引入了一些新规则来计算利息。
这是完全不同类型的变更请求。一个是改变功能; 其他人正在影响功能。我们有两种不同类型的理由来改变一个类。这违反了单一责任原则。
现在让我们尝试实施 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 AccountHolderName , InterestCalculator 类也不需要更改。所以这是单一责任原则的实施。 ** **
我们还使用 Interfaces 在 InterestCalculator 和 BankAccount 类之间进行通信。这将有助于我们管理类之间的依赖关系。