我必须为ATM卡设计一个具有以下属性的类:
除了getter和setter之外,我还有一种方法来验证ATM的引脚。根据封装原理,与ATM相关的所有方法都应该是ATM类的一部分。
但在这种情况下,以后我们需要更改验证方法的业务逻辑。我们不应该按照开放-封闭原则修改类,扩展类和创建一个新类将使我从完整的项目中更改ATM类的实例化。
一种方法是有一个工厂模式,它给我ATM,稍后当我扩展这个类时,我将把ATM更改为NewATM对象。
关于这个问题,我有以下几个问题:
发布于 2017-04-06 02:19:23
Karan,我并不真正了解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卡不应同时负责存储其信息和验证自身。
https://stackoverflow.com/questions/43097160
复制相似问题