一、概述
概念
简要示意图(没有一个统一的UML图)
角色
门面角色:门面模式核心,它被客户端调用,并且熟悉子系统
子系统角色:子系统,子系统并不知道门面的存在,门面对它来说只不过是另外一个客户端而已。
门面模式就是迪米特法则的一个很好的实践!
二、实践
借鉴网友的电脑启动的例子:电脑中有很多组件(比如内存,CPU等),开机的时候都会启动,用户不必一个个和他们打交道,而只需和“门面”打交道
开启门面即可!
三个CPU,Memory,Disk类
/**
* CPU类
*
* @author Administrator
**/
public class CPU {
public void turnOn() {
System.out.println("CPU turn on...");
}
public void turnOff() {
System.out.println("CPU turn ff...");
}
}
/**
* Disk类
*
* @author Administrator
**/
public class Disk {
public void turnOn() {
System.out.println("Disk turn on...");
}
public void turnOff() {
System.out.println("Disk turn ff...");
}
}
/**
* Memory类
*
* @author Administrator
**/
public class Memory {
public void turnOn() {
System.out.println("Memory turn on...");
}
public void turnOff() {
System.out.println("Memory turn ff...");
}
}
门面
/**
* 门面类
*
* @author Administrator
**/
public class Facade {
private CPU cpu;
private Disk disk;
private Memory memory;
public Facade() {
cpu = new CPU();
disk = new Disk();
memory = new Memory();
}
public void turnOn() {
cpu.turnOn();
disk.turnOn();
memory.turnOn();
}
public void turnOff() {
cpu.turnOff();
disk.turnOff();
memory.turnOff();
}
}
客户端使用
/**
* 客户端
* @author Administrator
**/
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.turnOn();
facade.turnOff();
}
}
三、改进与思考
优点
客户端与子系统之间松耦合