

public void register(String email, String password){
if (!email.contains("@"))
throw new ValidationException("Email is not an email!");
User user = new User(email, password);
_database.save(user);
MailMessage msg = new MailMessage("mysite@nowhere.com", email);
_smtpClient.send(msg);
}
ejemplo Single Responsability
public void calcularBonos(){
for(Empleado empleado : empleados){
int bono = 0;
switch(empleado.getTipo()){
case PROGRAMADOR:
bono = empleado.getSueldo()*2;
break;
case GERENTE:
bono = empleado.getSueldo()*10;
break;
}
empleado.setBono(bono);
}
}
ejemplo Open/Closed Principle
public interface Duck { void swim(); }
public class DuckImpl implements Duck {
public void swim() { /*do something to swim*/ }
}
public class ElectricDuck implements Duck {
public void swim() {
if (!isTurnedOn)
return;
//swim logic
}
}
public void makeDuckSwim(Duck duck){
duck.swim();
}
ejemplo Liskov Sustitution Principle
public interface Animal {
void alimentar();
void acariciar();
}
public class Perro implements Animal {
public void alimentar() { /*alimentando al perro*/ }
public void acariciar() { /*acariciando al perro*/}
}
ejemplo Interface Segregation Principle
public class Escorpion implements Animal {
public void alimentar() { /*alimentando al escorpión*/ }
public void acariciar() {
/*Estás nominado a un premio Darwin y posiblemente lo ganes*/
}
}
ejemplo Interface Segregation Principle
public class Volvo {
private B20 engine;
public Volvo (){engine = new B20()}
}
ejemplo Dependency Inversion Principle