首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATM卡OO类设计

ATM卡OO类设计
EN

Stack Overflow用户
提问于 2017-03-29 14:57:02
回答 1查看 456关注 0票数 0

我必须为ATM卡设计一个具有以下属性的类:

  1. 持卡人姓名
  2. 卡号
  3. 引脚

除了getter和setter之外,我还有一种方法来验证ATM的引脚。根据封装原理,与ATM相关的所有方法都应该是ATM类的一部分。

但在这种情况下,以后我们需要更改验证方法的业务逻辑。我们不应该按照开放-封闭原则修改类,扩展类和创建一个新类将使我从完整的项目中更改ATM类的实例化。

一种方法是有一个工厂模式,它给我ATM,稍后当我扩展这个类时,我将把ATM更改为NewATM对象。

关于这个问题,我有以下几个问题:

  1. 验证方法应该是ATM类的一部分吗?
  2. 还有别的办法解决这个问题吗?
EN

回答 1

Stack Overflow用户

发布于 2017-04-06 02:19:23

Karan,我并不真正了解Java,但我将使用SOLID来实现它:

代码语言:javascript
复制
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卡不应同时负责存储其信息和验证自身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43097160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档