您的位置:首页 > 编程语言 > Java开发

Java设计模式8-结构型-外观模式

2017-12-26 21:59 288 查看
外观模式,在项目开发和实际运用中十分频繁,但是其极易理解。

该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。

1、涉及到3个角色。

  a.门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。

  b.子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。

  c.客户角色:通过调用Facede来完成要实现的功能。

2、代码演示:

a.3个子系统的代码(CPU,Memory,Disk)
public class CPU
{
public void start()
{
System.out.print("cpu is start...");
}
public void shutDown()
{
System.out.print("CPU is shutDown...");
}
}

public class Disk
{
public void start()
{
System.out.print("Disk is start...");
}
public void shutDown()
{
System.out.print("Disk is shutDown...");
}
}

public class Memory
{
public void start()
{
System.out.print("Memory is start...");
}
public void shutDown()
{
System.out.print("Memory is shutDown...");
}
}

b.门面类Computer
//核心
public class Computer
{
private CPU cpu;
private Memory memory;
private Disk disk;
public Computer()
{
cpu = new CPU();
memory = new Memory();
disk = new Disk();
}
public void start()
{
System.out.print("Computer start begin");
cpu.start();
disk.start();
memory.start();
System.out.print("Computer start end");
}

public void shutDown()
{
System.out.print("Computer shutDown begin");
cpu.shutDown();
disk.shutDown();
memory.shutDown();
System.out.print("Computer shutDown end...");
}
}

c.客户端类Cilent
public class Cilent {
public static void main(String[] args)
{
Computer computer = new Computer();
computer.start();
System.out.print("=================");
computer.shutDown();
}
}


从上面的实例来看,有了这个Facade类,也就是Computer类,用户就不用亲自去调用子系统中的Disk,Memory、CPU类了,
不需要知道系统内部的实现细节,甚至都不用知道系统内部的构成。客户端只需要跟Facade交互就可以了


3、优点

  松散耦合

   使得客户端和子系统之间解耦,让子系统内部的模块功能更容易扩展和维护;

  简单易用

   客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可。

  更好的划分访问层次

   有些方法是对系统外的,有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好的隐藏了子系统内部的细节。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: