JAVA外观模式

来源:互联网 发布:聚宝盆软件官方下载 编辑:程序博客网 时间:2024/05/16 19:55

一:外观模式(Facade),它隐藏了系统的复杂性,并向客户端提供一个可以访问系统的接口,为了系统中的一组接口提供一个统一的访问接口,这个接口使得这子系统更加容易被访问或使用

二:角色和使用场景

简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单使用,这个模式中,涉及到3个角色

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

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

3)客户角色:通过调用Facade来完成要实现的功能

三:使用场景

1)为复杂的模块或子系统提供外界访问的模块

2)子系统相互独立

3)在层析结构中,可以使用外观模式定义系统中每一层的入口

四:优点

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

2)简单易用:客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,她只需要跟Facade类交互既可

3)更好地划分访问层次:有些方法是系统外的,有些方法是系统内部相互交互使用的,子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好地隐藏了子系统内部的细节

五:设计代码如下:

package com.niujun.facade.design;


/**
* @Description: cpu子系统类
*/
public class CPU {

public void start(){
System.err.println("cpu is start ..................");
}

public void shutdown(){
System.err.println("cpu is shutdown ..................");
}


}


package com.niujun.facade.design;


/**
* @Description: Disk子系统类
*/
public class Disk {

public void start(){
System.err.println("Disk is start....................");
}

public void shutdown(){
System.err.println("Disk is shutdown..................");
}


}


package com.niujun.facade.design;


/**
* @Description: Memory子系统类
*/
public class Memory {


public void start(){
System.err.println("Memory is start....................");
}

public void shutdown(){
System.err.println("Memory is shutdown................");
}
}


package com.niujun.facade.design;


/**
* @Description: 门面类(核心)
*/
public class Computer {

private CPU cpu;

private Disk disk;

private Memory memory;


public Computer() {
cpu = new CPU();
disk = new Disk();
memory = new Memory();
}

public void start(){
System.err.println("computer is begin");
cpu.start();
disk.start();
memory.start();
System.err.println("computer is end");
}


public void shutdown(){
System.err.println("computer is begin");
cpu.shutdown();
disk.shutdown();
memory.shutdown();
System.err.println("computer is end");
}
}


package com.niujun.facade.design;


/**
* @Description: 客户端类 
*/
public class Client {

public static void main(String[] args) {
Computer computer = new Computer();
computer.start();
computer.shutdown();
}
}

原创粉丝点击