zoukankan      html  css  js  c++  java
  • 极速理解设计模式系列: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 下载。

  • 相关阅读:
    根据NSString字符串长度自动改变UILabel的frame
    计算两个日期的天数问题
    iOS学习笔记(02)
    iOS学习笔记(01)
    iOS使用Swift语言检查并提示更新
    iOS的一些关键字
    一些常见warning的原因和解决方法
    Objective-C和Swift实现单例的几种方式
    与导航栏下控件的frame相关的edgesForExtendedLayout、translucent、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets等几个属性的详解
    App常见崩溃问题分析
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2199402.html
Copyright © 2011-2022 走看看