Java设计模式之外观模式(Facade)
2016-02-29 13:44
417 查看
Facade的意图
为子系统提供一个接口,便于它的使用。
比如医院看病,咱们不知道医生的话是不是直接找接待员呢?,这个接待员再找适合医生来看病,直接上代码,清晰易懂:
几个医生类,不同医生不同职责
弄个接待员(外观类),统一管理分配
病人来了,看下可以用不
可以看出来命令端是看不到我们具体的模块的,就是病人看不到医生在哪,医生有那些东东,只能找这个接待员(外观类)去调用它需要的。这就是外观类,比较简单
优点
1.便于维护,所有子模块都用一个外观管理
2.隐藏了内部结构的实现
3.更加易用,毕竟只需要跟外观类打交道。
为子系统提供一个接口,便于它的使用。
比如医院看病,咱们不知道医生的话是不是直接找接待员呢?,这个接待员再找适合医生来看病,直接上代码,清晰易懂:
几个医生类,不同医生不同职责
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.更加易用,毕竟只需要跟外观类打交道。
相关文章推荐
- Java基础 静态块、非静态块、构造函数的执行顺序
- Java设计模式(二)——迭代模式
- myEclipse在线生成注册码
- JDK5新特性之可变参数
- RxJava 过滤操作符 ofType
- Java Enum类型
- JAVA理解逻辑程序的书上全部重要的习题
- No result defined for action
- eclipse中缺少插件的问题
- JDK5新特性之静态导入
- JDK5新特性之增强for
- java中的常用包
- [JAVA · 初级]:4.深入理解自增&自减运算
- JAVA学习【8】集合框架HashMap、TreeMap的基本用法
- Eclipse快捷键大全
- AS 项目转 Eclipse 收集
- 20个非常有用的Java程序片段
- JDK5新特性之泛型
- 基于Spring的QQ第三方登录实现
- java学习日记——final关键字