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();
}
}
转载于:https://blog.51cto.com/qianray/1878307