码迷,mamicode.com
首页 > 其他好文 > 详细

设计原则之接口隔离原则

时间:2016-11-30 23:23:12      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:java   设计模式   design pattern   

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();
    }
}


本文出自 “不死的小强” 博客,请务必保留此出处http://qianray.blog.51cto.com/4607992/1878307

设计原则之接口隔离原则

标签:java   设计模式   design pattern   

原文地址:http://qianray.blog.51cto.com/4607992/1878307

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!