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();
}
}
- 论Java外观模式
- java外观模式
- Java外观模式(Facade)
- Java外观模式补充
- Java外观模式补充
- 论Java外观模式
- 外观模式 JAVA实现
- JAVA 外观模式
- java外观模式
- java外观模式
- Java外观模式(Facade)
- java 之 外观模式
- java外观模式
- JAVA-外观模式
- java 外观模式实现
- JAVA外观模式
- java之外观模式
- 外观模式(java实现)
- [C#]Application
- 基于微信红包插件的原理实现android任何APP自动发送评论(已开源)
- 安装office2010常见的提示错误解决办法
- background-position用法详解
- springmvc结合freemarker配置url访问的根路径
- JAVA外观模式
- The Grove bfs+射线思想
- SpringMVC学习(六) 关于mvc:annotation-driven标签
- heartbeat+lvs和keepalived
- View事件分发机制
- 洛谷 P2186 小Z的栈函数
- 累加值为k的最长子数组,累加值不大于k的最长子数组
- Leetcode 310. Minimum Height Trees
- 笨方法学Python 习题 10: 那是什么?