segregate   v.隔离
se 蛇  gre green格林  gate门
蛇被格林用门隔离了。
设计原则之接口隔离原则
动机:
        客户不应该被强制实现他们不用的方法。应该用多个小的接口代替庞大功能全的接口。
结论:        该原则在代码设计的时候就要考虑。可以使用适配器模式将胖接口隔离。
Bad Example:    缺点:
        1、如果新增一个robot机器人工人,那么eat方法就是多余的了。
// 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    好处:
        1、接口功能最小化,需要哪个加哪个。
// interface segregation principle - good example
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();
    }
}