lundi 11 avril 2016

Design Pattern for returning a credit card base on a boolean

I wrote a GUI for users to input his/her credit card number. The program must return the correct Credit Card class subclass such as MasterCard, Visa, etc.

Here is my code:

abstract class CreditCard{

    String cardNumber;

    public CreditCard(String number)
    {
    cardNumber = number;
    }
}

All of my subclass such as MasterCard, Visa, etc extends the CreditCard Superclass

I chose a Factory Design Pattern

class CreditCardFactory {


public static CreditCard createCard(String number){
    CreditCard cc = null;

    if(number.length() == 0 || number.length() > 19 )
        return cc;

    else if(isMasterCard(number))
        cc = new MasterCC(number);
    else if (isVisa(number))
        cc = new VisaCC(number);
    else if(isAmericanExpress(number))
        cc = new AmExCC(number);
    else if(isDiscover(number))
        cc = new DiscoverCC(number);
    return cc;
}


private static boolean isMasterCard(String number){

    if(number.length() != 16)
        return false;
    return (number.charAt(0) == '5' 
            && 1 >= Integer.valueOf(number.charAt(1)) 
            && Integer.valueOf(number.charAt(1)) <= 5);
     }
// more code boolean code

}

My professor said to redo it because it isn't a good design pattern to solve it. Any suggestion?

Aucun commentaire:

Enregistrer un commentaire