一、门面模式概述
门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。
1) 门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。
2) 子系统角色:实现了子系统的功能。对它而言, façade 角色就和客户角色一样是未知的,它没有任何 façade 角色的信息和链接。
3) 客户角色:调用 facade 角色来完成要得到的功能。
门面模式是一种结构型模式
二、门面模式代码示例
以写信这个过程为例
先定义一个类规定写信的过程
public interface LetterProcess {
//写信的内容
public void writeLetter(String context);
//写收件人地址
public void writeAddress(String address);
//寄信
public void send();
}
再写一个实现改接口的类
public class LetterProcessImpl implements LetterProcess {
@Override
public void writeLetter(String context) {
System.out.println("write context:" + context);
}
@Override
public void writeAddress(String address) {
System.out.println("write address:" + address);
}
@Override
public void send() {
System.out.println("send letter!");
}
}
再定义一个门面,由客户端来调用
public class Facade {
LetterProcess letterProcessImpl = new LetterProcessImpl();
public void send(String context,String address) {
letterProcessImpl.writeLetter(context);
letterProcessImpl.writeAddress(address);
letterProcessImpl.send();
}
}
最后定义一个客户端,只与门面类交互
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
String context = "this is context";
String address = "this is address";
facade.send(context, address);
}
}
运行结果:
write context:this is context
write address:this is address
send letter!