您的位置:首页 > 编程语言 > Java开发

Java设计模式之外观模式(Facade)

2016-02-29 13:44 417 查看
Facade的意图

为子系统提供一个接口,便于它的使用。

比如医院看病,咱们不知道医生的话是不是直接找接待员呢?,这个接待员再找适合医生来看病,直接上代码,清晰易懂:

几个医生类,不同医生不同职责

public class Doctor1 {
/*
* 作为一个医生的职责
* */
public void kanBing(){
System.out.println("感冒找我");
}
/*
* 其它,比如作为医生除了看病还做其它的涩,不需要给你看到
* */
public void other(){

}
}
public class Doctor2 {
/*
* 作为一个医生的职责
* */
public void kanBing(){
System.out.println("发烧找我");
}
/*
* 其它,比如作为医生除了看病还做其它的涩,不需要给你看到
* */
public void other(){

}
}
public class Doctor3 {
/*
* 作为一个医生的职责
* */
public void kanBing(){
System.out.println("神经病找我");
}
/*
* 其它,比如作为医生除了看病还做其它的涩,不需要给你看到
* */
public void other(){

}
}


弄个接待员(外观类),统一管理分配

public class Facade {
private Doctor1 doctor1;
private Doctor2 doctor2;
private Doctor3 doctor3;

//感冒你就找看感冒的医生,后面一样
public void ganMao(){
doctor1 = new Doctor1();
doc
4000
tor1.kanBing();
}
//发烧你就找看发烧的医生,后面一样
public void faShao(){
doctor2 = new Doctor2();
doctor2.kanBing();
}
//神经病你就找看神经的医生,后面一样
public void shenJing(){
doctor3 = new Doctor3();
doctor3.kanBing();
}
}


病人来了,看下可以用不

public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
Facade facade = new Facade();
//来的是发烧病人,接待员调用发烧的医生去
facade.faShao();
}

}


可以看出来命令端是看不到我们具体的模块的,就是病人看不到医生在哪,医生有那些东东,只能找这个接待员(外观类)去调用它需要的。这就是外观类,比较简单

优点

1.便于维护,所有子模块都用一个外观管理

2.隐藏了内部结构的实现

3.更加易用,毕竟只需要跟外观类打交道。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: