zoukankan      html  css  js  c++  java
  • 设计模式——Facade模式

    3        Façade模式

    3.1      概述

    又称外观模式。这个模式是现实中很常见到的一种模式,比如汽车的设计,汽车里面是很复杂的,但是开汽车是很简单的,为什么?因为汽车设计人员把汽车的复杂部分“封装”在汽车里面,只提供很简单易用的方向盘、刹车和加油给你控制汽车。这就是Façade模式,我们需要一个更简单的方式使用一个复杂的东西,并可满足我们的需要。

    3.2      设计

    那么如何能简单的使用一个复杂的东西呢?只需要这个复杂的东西提供我所需的功能就行了。比如,汽车向前行驶对汽车本身是一个很复杂的系统,要抽汽油燃烧,通过引擎形成动力,再通过承轴传到轮胎上,使轮胎滚动,从而使汽车前进。如果我们开车需要去控制汽车内部的这些部件的运转的话,估计没人能学会开车。那么怎么办?很简单,汽车提供一个功能——加油,我们只要脚踏油门,汽车就会前进。这样,大家都能很容易学会开车了。


    3.3     
    实现

    UML图:

    示例代码为:

     1using System;
     2
     3namespace Example
     4{
     5    /// <summary>
     6    /// 示例
     7    /// </summary>

     8    class Example
     9    {
    10        /// <summary>
    11        /// 应用程序的主入口点。
    12        /// </summary>

    13        [STAThread]
    14        static void Main(string[] args)
    15        {
    16            UseCar useCar = new UseCar() ;
    17            useCar.Drive() ;//开车
    18        }

    19        /// <summary>
    20        /// 复杂的汽车
    21        /// </summary>

    22        public class Car
    23        {
    24            public Car() {}
    25
    26            public void Oil()
    27            {
    28                Console.WriteLine( "加油到引擎中……" ) ;
    29            }

    30            public void Motor()
    31            {
    32                Console.WriteLine( "发动引擎……" ) ;
    33            }

    34            public void Transmission()
    35            {
    36                Console.WriteLine( "动力传动中……" ) ;
    37            }

    38            public void Tire()
    39            {
    40                Console.WriteLine( "轮胎转动中……" ) ;
    41            }

    42            //其他方法……
    43        }

    44        /// <summary>
    45        /// 使用汽车
    46        /// </summary>
    47        /// <remarks>
    48        /// 使用Facade模式,用一个简单的功能(Drive)封装了汽车内部的复杂动作(Oil、Motor……)
    49        /// 使用者只使用这个简单功能(Drive)就可满足控制汽车前进的需求
    50        /// </remarks>

    51        public class UseCar
    52        {
    53            public UseCar() {}
    54
    55            public void Drive()
    56            {
    57                Console.WriteLine( "准备开车!" ) ;
    58                Car car = new Car() ;
    59                car.Oil() ;
    60                car.Motor() ;
    61                car.Transmission() ;
    62                car.Tire() ;
    63                Console.WriteLine( "汽车行驶中!" ) ;
    64            }

    65        }

    66    }

    67}

    68
  • 相关阅读:
    2018-2019-2 实验三 敏捷开发与XP实践
    计算机网络课外实验一级 20175319江野
    2018-2019-2 《Java程序设计》第9周学习总结
    MyCP(课下作业,必做)
    [NOIP2012] 疫情控制
    [SPOJ2021] Moving Pebbles
    谁能赢呢?
    [HEOI2014] 人人尽说江南好
    [笔记] 巴什博弈
    [SCOI2008] 着色方案
  • 原文地址:https://www.cnblogs.com/fengchao/p/199266.html
Copyright © 2011-2022 走看看