讲故事学设计模式-门面(Facade)模式

        门面设计模式隐藏自身的复杂功能转而提供一个简单的接口。电脑的开机过程就是一个很好的例子。电脑在开机时会调用CPU、内存、硬盘。为了方便用户,我们可以添加一个门面(facade),封装这些复杂的任务调度,并且提供一个简单的接口。

        译者想到了一个更好的例子:大家在去医院看病的时候,会经历挂号、门诊、划价、收费、化验、取药等流程,往往这些职能部门在医院都是独立、分散设置的,病人一一地与这些独立部门打交道,显然不是一件容易的事情。比如,首先病人要挂号,然后门诊。如果医生要求化验,病人首先必须划价,然后缴费,才能到化验室做化验。化验完后,再回到门诊室。
        解决这种办法就可以引进门面模式。对于医院来说,我们可以在大门前设置一个接待员(现在有效率的医院往往都是这样),由接待员负责代为挂号、划价、收费、取药等,病人只接触接待员,由接待员与其他部门去沟通。

1、类图


2、源码

//the components of a computer
 
class CPU {
    public void processData() { }
}
 
class Memory {
    public void load() { }
}
 
class HardDrive {
    public void readdata() { }
}
 
/* Facade */
class Computer {
    private CPU cpu;
    private Memory memory;
    private HardDrive hardDrive;
 
    public Computer() {
        this.cpu = new CPU();
        this.memory = new Memory();
        this.hardDrive = new HardDrive();
    }
 
    public void run() {
        cpu.processData();
        memory.load();
        hardDrive.readdata();
    }
}
 
 
class User {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.run();
    }
}


3、项目中的应用

In javax.faces.context, ExternalContext internally uses ServletContext, HttpSession, HttpServletRequest, HttpServletResponse, etc. It allows the Faces API to be unaware of the nature of its containing application environment.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值