首页 技术 正文
技术 2022年11月9日
0 收藏 320 点赞 2,746 浏览 1186 个字

外观模式(Facade)

定义

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

类图

设计模式之笔记–外观模式(Facade)

描述

Facade:外观类,外观类知道哪些子系统类负责处理请求,将用户的请求代理给恰当的子系统对象。

Classes:子系统类,实现了子系统的功能。

外观模式的实现核心是由外观类去保存各个子系统的引用,客户端只需要引用这个外观类,然后由外观类去调用各个子系统中的方法。

外观模式将一个或者多个类的复杂的操作进行了隐藏,只显示出一个一致的界面供客户端使用;即外观模式提供一个简洁的外观接口将一个复杂的子系统变得容易使用。

应用场景

在饭店,顾客希望来一份微辣的西红柿鸡蛋面,此时顾客并不用关心面条的制作过程,只需要跟服务员说好“来一份西红柿鸡蛋面,微辣”,然后等着服务员把面条端上来就行了。

设计模式之笔记–外观模式(Facade)

    /// <summary>
/// 面条
/// </summary>
public class Noodles
{
public void Cook()
{
Console.WriteLine("煮面条.");
}
} /// <summary>
/// 水
/// </summary>
public class Water
{
public void Boil()
{
Console.WriteLine("烧水.");
}
} /// <summary>
/// 西红柿
/// </summary>
public class Tomato
{
public void Cook()
{
Console.WriteLine("加入西红柿.");
}
} /// <summary>
/// 鸡蛋
/// </summary>
public class Egg
{
public void Cook()
{
Console.WriteLine("打入鸡蛋.");
}
} /// <summary>
/// 辣椒
/// </summary>
public class Pepper
{
public void Put()
{
Console.WriteLine("放入少许辣椒.");
}
} public class Facade
{
private Noodles noodles;
private Water water;
private Tomato tomato;
private Egg egg;
private Pepper pepper; public Facade()
{
this.noodles = new Noodles();
this.water = new Water();
this.tomato = new Tomato();
this.egg = new Egg();
this.pepper = new Pepper();
} public void Cook()
{
this.tomato.Cook();
this.water.Boil();
this.noodles.Cook();
this.egg.Cook();
this.pepper.Put();
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,078
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,553
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,402
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,177
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,814
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898