Template Pattern
- Code reuse
- Common in libraries
- Algorithm emphizes
Main
public static void main(String[] args) {
CreditCard amex = new CreditCard(new AmexStrategy());
amex.setNumber("379185883464283");
amex.setDate("04/2020");
amex.setCvv("123");
System.out.println("Amex valid? : " + amex.isValid());
CreditCard masterCard = new CreditCard(new MasterStrategy());
masterCard.setNumber("379185883464289");
masterCard.setDate("04/2020");
masterCard.setCvv("123");
System.out.println("Master valid? : " + masterCard.isValid());
}
CreditCard
public class CreditCard {
private String number;
private String date;
private String cvv;
private ValidationStrategy vs;
public CreditCard(ValidationStrategy vs){
this.vs = vs;
}
public boolean isValid(){
return vs.isValid(this);
}
}AmexStrategy
public class AmexStrategy extends ValidationStrategy {
@Override
public boolean isValid(CreditCard c) {
boolean isValid = true;
isValid = c.getNumber().startsWith("37") || c.getNumber().startsWith("34");
isValid = passesLuhn(c.getNumber());
return isValid;
}
}
MasterStrategy
public class MasterStrategy extends ValidationStrategy {
@Override
public boolean isValid(CreditCard c) {
boolean isValid = true;
isValid = c.getNumber().startsWith("50") ;
isValid = passesLuhn(c.getNumber());
return isValid;
}
}
Comentarios
Publicar un comentario