设计模式--外观模式

为子系统中的一组接口提供一个一致的界面,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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值