设计模式--外观模式

简介: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 形象比喻: 我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
形象比喻:
我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。   门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。
 
Facade .java:
知道哪些子系统类负责处理请求。  将客户的请求代理给适当的子系统对象。
 1 public class Facade {
 2     ServiceA sa;
 3     
 4     ServiceB sb;
 5     
 6     ServiceC sc;
 7     
 8     public Facade() {
 9         sa = new ServiceA();
10         sb = new ServiceB();
11         sc = new ServiceC();
12     }
13     
14     public void methodA() {
15         sa.methodA();
16         sb.methodB();
17     }
18     
19     public void methodB() {
20         sb.methodB();
21         sc.methodC();
22     }
23     
24     public void methodC() {
25         sc.methodC();
26         sa.methodA();
27     }
28 }

 

子系统 ServiceA .java
  1. 1 public class ServiceA{
    2     public void methodA(){
    3         System.out.println("这是服务A");
    4     }
    5 }    

     

子系统 ServiceB.java
  1. 1 public class ServiceB  {
    2     public void methodB() {
    3         System.out.println("这是服务B");
    4     }
    5 }

     


子系统 ServiceC.java
1 public class ServiceC {
2     public void methodC() {
3         System.out.println("这是服务C");
4     }
5 }

 

测试类:
  1.  1 public class Test {
     2     
     3     public static void main(String[] args) {
     4         Facade facade = new Facade();
     5         facade.methodA();
     6         System.out.println("========");
     7         facade.methodB();
     8     }
     9     
    10 }

     


测试结果:
这是服务A
这是服务B
========
这是服务B
这是服务C

 

相关文章
|
1月前
|
设计模式 存储 uml
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
29 1
|
6月前
|
设计模式 uml
结构型设计模式03-外观模式
结构型设计模式03-外观模式
20 0
|
3月前
|
设计模式
设计模式-外观模式
设计模式-外观模式
31 0
|
3月前
|
设计模式 Go 开发工具
Golang设计模式——03外观模式
Golang设计模式——03外观模式
21 0
|
3月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
31 1
|
4月前
|
设计模式 前端开发 Java
Java设计模式【十一】:外观模式
Java设计模式【十一】:外观模式
22 0
|
1月前
|
设计模式 uml
设计模式之外观模式
设计模式之外观模式
|
1月前
|
设计模式 应用服务中间件 智能硬件
【设计模式】外观模式
【设计模式】外观模式
|
6月前
|
设计模式 Java 数据库连接
【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)
49 0
|
3月前
|
设计模式 Java
聊聊Java设计模式-外观模式
外观(Facade)模式,又叫做门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问的模式。
35 1
聊聊Java设计模式-外观模式