zoukankan      html  css  js  c++  java
  • 外观模式

    视频连接: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()被调用!");
        }   
    }
  • 相关阅读:
    将一张图片的人物融入另一张图片中
    填充---内容识别图片
    使用蒙版--渐变--制作瓶子倒影
    form表单基础知识
    表格排版及其表格嵌套
    HTML表格,table,thead,tbody,tfoot,th,tr,td,的属性以及跨行,跨列
    垃圾收集,内存问题
    JS预解析机制
    python ==》 内置函数
    python ==》 递归
  • 原文地址:https://www.cnblogs.com/LiaoMengyu/p/12661439.html
Copyright © 2011-2022 走看看