• 极速理解设计模式系列:13.外观模式(Facade Pattern)


    三个角色:外形类(Facade)、子系统类(SubSystem)、客户端(Client) 

            外形类(Facade):整合子系统,并且处理客户的请求

            子系统类(SubSystem):实现独立的功能,处理Facade任务

            客户端(Client): 只需要调用外形类接口即可。

     实现思路:客户端调用外形类,在外形类中调用相应的子系统即可。

     类图:

     

    应用场景:用户登录系统过程中,需要用户登录、设置Cookie、初始化界面布局。

    分析:MainProgram类作为Facade外观类,其内部组织和将请求传递给相应的子系统,首先让用户登录,然后设置Cookie和初始化页面布局,同理在用户退出登录的时候,调用外观类动作。

            下面我们在控制台程序去演示一下如何使用Facade Pattern:

            一、 外形类(Facade)

        //外形类(Facade)
    class MainProgram
    {
    User user = new User();
    Cookie cookie = new Cookie();
    Flow flow = new Flow();

    public void Login()
    {
    user.UserLogin();
    cookie.SetCookie();
    flow.SetFlow();
    }
    public void UnLogin()
    {
    user.UserUnLogin();
    cookie.UnCookie();
    flow.UnFlow();
    }
    }

            二、子系统类(SubSystem)

        //子系统(SubSystem) 用户子系统
    class User
    {
    public void UserLogin()
    {
    Console.WriteLine("用户开始登陆");
    }
    public void UserUnLogin()
    {
    Console.WriteLine("用户注销登陆");
    }
    }

    //子系统(SubSystem) Cookie子系统
    class Cookie
    {
    public void SetCookie()
    {
    Console.WriteLine("设置Cookie");
    }
    public void UnCookie()
    {
    Console.WriteLine("注销Cookie");
    }
    }

    //子系统(SubSystem) 界面子系统
    class Flow
    {
    public void SetFlow()
    {
    Console.WriteLine("设置界面布局");
    }
    public void UnFlow()
    {
    Console.WriteLine("注销界面布局");
    }
    }

            三、客户端(Client)

        //客户端(Client)
    class Program
    {
    static void Main(string[] args)
    {
    MainProgram main = new MainProgram();
    main.Login();
    main.UnLogin();
    Console.ReadLine();
    }
    }

            如需源码请点击 FacadePattern.rar 下载。

  • 相关阅读:
    HTTP协议简介
    Web开发中B/S架构和C/S架构的区别
    软件测试作业三
    Java8 时间处理
    Java EE
    Java 中的 I/O 抽象
    Python 高级 I/O 多路复用
    SQL 与关系代数
    Python 协程与事件循环
    Java SE 5.0
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2199402.html
Copyright © 2020-2023  润新知