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