我必须为ATM卡设计一个具有以下属性的类:
除了getter和setter之外,我还有一种验证ATM引脚的方法。根据封装原则,与ATM相关的所有方法都应该是ATM类的一部分。
但是以后我们需要改变validate方法的业务逻辑。我们不应该按照Open-Closed原则修改类,并且扩展类并创建一个新类将使我从整个项目中更改ATM类的实例化。
一种方法是有一个工厂模式,它给我ATM对象,稍后当我扩展类时,我会将ATM对象更改为NewATM对象。
现在我对这个问题有以下问题:
答案 0 :(得分:0)
卡兰, 我不太了解Java,但这就是我用SOLID做的方式:
interface IAtmCard
{
string CardholderName { get; set; }
string CardNumber { get; set; }
}
interface IPin
{
string Pin { get; set; }
}
class AtmCard : IPin, IAtmCard
{
// Implement IAtmCard
public string CardholderName { get; set; }
public string CardNumber { get; set; }
// Implement IPin
public string Pin { get; set; }
}
static class ATM
{
// This way the ValidatePin function only depends on the IPin interface
public static bool ValidatePin(IPin card, string providedPin)
{
return card.Pin == providedPin;
}
}
我认为实际的ATM卡与ATM逻辑本身是完全独立的对象。 ATM卡不应负责存储信息和验证信息。