Vamos con ISP:
Interface Segregation Principle (Principio de Segregación de Interfaces)
Este ejemplo viola el principio ISP, tenemos una clase Manager que representa la persona que dirije a los trabajadores. Y tenemos 2 tipos de trabajadores, algunos muy eficientes. Ambos tipos necesitan un break para comer. Ahora, también hay algunos robots y éstos no necesitan comer.
Si conservamos el diseño, la clase robots se ve forzada a implementar el método eat().
// ISP - Mal ejemplo
interface IWorker {
public void work();
public void eat();
}
class Worker implements IWorker{
public void work() {
// ....working
}
public void eat() {
// ...... eating in launch break
}
}
class SuperWorker implements IWorker{
public void work() {
//.... working much more
}
public void eat() {
//.... eating in launch break
}
}
class Manager {
IWorker worker;
public void setWorker(IWorker w) {
worker=w;
}
public void manage() {
worker.work();
}
}
A continuación tenemos el código siguiendo ISP. La interface IWorker la dividimos en 2.
// ISP - Correcto
interface IWorker extends Feedable, Workable {
}
interface IWorkable {
public void work();
}
interface IFeedable{
public void eat();
}
class Worker implements IWorkable, IFeedable{
public void work() {
// ....working
}
public void eat() {
//.... eating in launch break
}
}
class Robot implements IWorkable{
public void work() {
// ....working
}
}
class SuperWorker implements IWorkable, IFeedable{
public void work() {
//.... working much more
}
public void eat() {
//.... eating in launch break
}
}
class Manager {
Workable worker;
public void setWorker(Workable w) {
worker=w;
}
public void manage() {
worker.work();
}
}
Conclusion
Como resumen:
“Los clientes no deberían ser obligados a depender de interfaces que no utilizan”
o…
“Muchas interfaces muy especializadas son preferibles a una interfaz general en la que se agrupen todas las interfaces”
Ambas son buenas…
Saludos,
Sed felices ^^
Fed up with getting low numbers of useless visitors to your site? Well i want to share with you a fresh underground tactic that makes me personally $900 per day on 100% AUTOPILOT. I possibly could be here all day and going into detail but why dont you just check their site out? There is really a great video that explains everything. So if your serious about making simple hard cash this is the website for you. Auto Traffic Avalanche