外观模式的目的不是在给予系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统。
外观模式的本质是:封装交换,简化调用。
以电脑为例,电脑是由很多模块组装而成,启动和关闭都会涉及很多模块的启动和关闭。如果让用户一个个去关闭的话,那就太麻烦了。所以这里用到了外观模式进行封装,简化调用。
public interface Imode()
{
void start();
void shutDown();
}
public class Cpu implements Imode
{
@override
public void start()
{
System.out.println("cpu启动");
}
@override
public void shutDown()
{
System.out.println("cpu关闭");
}
}
public class Disk implements Imode
{
@override
public void start()
{
System.out.println("Disk 启动");
}
@override
public void shutDown()
{
System.out.println("Disk 关闭");
}
}
public class Memory implements Imode
{
@override
public void start()
{
System.out.println("Memory 启动");
}
@override
public void shutDown()
{
System.out.println("Memory 关闭");
}
}
//门面类
public class Computer
{
private Imode cpuMode,diskMode,memoryMode;
public Computer()
{
cpuMode = new Cpu();
diskMode = new Disk();
memoryMode = new Memory();
}
public void start()
{
cpuMode.start();
diskMode.start();
memoryMode.start();
}
public void shutDown()
{
cpuMode.shutDown();
diskMode.shutDown();
memoryMode.shutDown();
}
}
//客户端的调用
public class Client
{
punlic static void main(String[] args)
{
Computer computer = new Computer();
computer.start();
computer.shutDown();
}
}