外观模式

视频连接:https://www.bilibili.com/video/BV1iQ4y1M7FV/

今天为大家分享一下外观模式:

外观模式动机

  我们来通过这个例子,看看外观模式的模式动机:

  假设现在在一个餐馆里面,有顾客a、b、c需要点餐吃饭。如左图所示,顾客a、b、c需要自己取点餐,然后自己去取餐,得到自己想点的菜品1、2、3、4、5、6、7等等。再看有图,我们给菜品和顾客之间,增加了一个服务员,顾客就只需要和服务员说明,自己想要什么菜,让服务员来上菜,这样顾客就不需要跑来跑去去拿每一个菜了。这里的服务员即外观角色。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。

 外观模式模式结构

 

 外观模式的定义

 模式分析

模式优缺点

外观模式的结构与实现

1. 模式的结构

外观(Facade)模式包含以下主要角色。

  1. 外观(Facade)角色:为多个子系统对外提供一个共同的接口。
  2. 子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。
  3. 客户(Client)角色:通过一个外观角色访问各个子系统的功能。

实现代码

 

package facade;
public class FacadePattern
{
    public static void main(String[] args)
    {
        Facade f=new Facade();
        f.method();
    }
}
//外观角色
class Facade
{
    private SubSystem01 obj1=new SubSystem01();
    private SubSystem02 obj2=new SubSystem02();
    private SubSystem03 obj3=new SubSystem03();
    public void method()
    {
        obj1.method1();
        obj2.method2();
        obj3.method3();
    }
}
//子系统角色
class SubSystem01
{
    public  void method1()
    {
        System.out.println("子系统01的method1()被调用!");
    }   
}
//子系统角色
class SubSystem02
{
    public  void method2()
    {
        System.out.println("子系统02的method2()被调用!");
    }   
}
//子系统角色
class SubSystem03
{
    public  void method3()
    {
        System.out.println("子系统03的method3()被调用!");
    }   
}

 

posted @ 2020-04-08 17:43  liaomengyu  阅读(147)  评论(0编辑  收藏  举报