Skip to content

Instantly share code, notes, and snippets.

@dfucci
Created April 26, 2017 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dfucci/9ab9bc9a0905e766ee57138227643c2d to your computer and use it in GitHub Desktop.
Save dfucci/9ab9bc9a0905e766ee57138227643c2d to your computer and use it in GitHub Desktop.
Interface segregation principle
//Bad example
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();
}
}
//Good example
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}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment