如何从类中提取方法以便在很多地方重用它并保持封装?

时间:2016-01-27 21:15:28

标签: c# oop refactoring

我正在编写ATM软件以便训练面向对象的编程,并且我已经使用VerifyPin方法获得Pin类。

    class Pin
{
    private int _pin;

    public void ChangePin (int newPin)
    {
        if (newPin.ToString().Length != 4)
        {
            throw new ArgumentException("PIN must be exactly 4 digits long");
        }

        _pin = newPin;
    }

    public bool VerifyPin (int pin)
    {
        return (_pin == pin);
    }


}

我正在尝试在其他类中调用此方法,以验证存储在卡内的PIN以及帐户。

到目前为止,我提出了做这样的事情的想法,但我确信有更好的方法

    class Card
{
    private Pin _pin;

    public Card(Pin pin)
    {
        this._pin = pin;   

    public bool VerifyPin (int pin)
    {
        return this._pin.VerifyPin(pin);
    }
}

任何有关主题的更多信息来源也会受到欢迎。

3 个答案:

答案 0 :(得分:2)

此方法可以是静态的。这样就可以从同一个项目中的任何类访问和使用它, 但似乎你想创建一个pin对象,然后调用该对象方法:VerifyPin将把你要验证的引脚作为参数

答案 1 :(得分:0)

如果将VerifyPin方法设为静态,则可以在不创建Pin类实例的情况下调用它。

public static bool VerifyPin(int pin){}

Pin.VerifyPin(pin);

答案 2 :(得分:0)

我会说该引脚应该封装在一个帐户中,而不是一张卡。卡片将与帐户相关联。因此,为了在给出卡时验证引脚,您可以调用以下代码:

bool verified = myCard.Account.VerifyPin(pin);

(静态方法不起作用,因为它无法访问字段_pin)。