C#设计模式--外观模式

外观模式是一种设计模式,用于提供一个统一的接口,简化子系统的调用。它通过Facade类封装多个子系统的操作,使得客户端可以更方便地与子系统交互。本文介绍了外观模式的概念、生活实例,并给出了C#代码示例,包括子系统类、外观模式接口类和用户测试代码。应用外观模式可以减少系统间的耦合,提高代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

设计模式:
外观模式(Facade Pattern)
简单介绍:
外观模式(Facade Pattern):

外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。

比如调用子系统1和子系统2的Print方法,如果没有外观模式那么你需要一个个的调用,子系统如果是少还好,多了就要疯了,这里就可以使用外观模式,调用外观模式对外提供的方法一次性完成对子系统的层层调用

生活实例:比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电源按钮,当按下电源按钮的时候,启动了主机和显示器,这里的这个电源按钮就差不多是外观模式。对外只提供了一个电源按钮。

外观模式组成:

Facade:负责子系统的的封装调用

Subsystem Classes:具体的子系统,实现由外观模式Facade对象来调用的具体任务
在这里插入图片描述
外观模式C#代码举例:

SubSystem1:子系统1
///
/// 子系统1
///
public class SubSystem1
{
public void Print1()
{
Console.WriteLine(“SubSystem1”);
}
}
SubSystem2:子系统2类
///
/// 子系统2
///
public class SubSystem2
{
///
/// 子系统2
///
public void Print2()
{
Console.WriteLine(“SybSystem2”);
}
}
Facade:外观模式对外提供接口类
///
/// 外观模式对外接口类
///
public class Facade
{
private SubSystem1 _subSystem1;
private SubSystem2 _subSystem2;

    public Facade()
    {
        _subSystem1 = new SubSystem1();
        _subSystem2 = new SubSystem2();
    }

    public void Print()
    {
        _subSystem1.Print1();
        _subSystem2.Print2();
    }
}

用户测试类:
///
/// 客户端测试类
///
class Client
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.Print();
Console.Read();
}
}

外观模式生活实例笔记本例子:
生活实例:比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电源按钮,当按下电源按钮的时候,启动了主机和显示器,这里的这个电源按钮就差不多是外观模式。对外只提供了一个电源按钮。

假设笔记本是由来个子系统:显示器和主机组成

当按下电源按钮,开启主机和显示器

外观模式生活实例笔记本例子C#代码:
PC_Monitor:笔记本显示器类
///
/// 笔记本显示器
///
public class PC_Monitor
{
public void Open()
{
Console.WriteLine(“开启显示器”);
}
public void Close()
{
Console.WriteLine(“关闭显示器”);
}
}
PC_Host:笔记本主机类
///
/// 笔记本主机
///
public class PC_Host
{
public void Open()
{
Console.WriteLine(“开启主机”);
}
public void Close()
{
Console.WriteLine(“关闭主机”);
}
}
PC_Facade:笔记本外观模式对外接口类
///
/// 笔记本对外接口类
///
public class PC_Facade
{
private PC_Monitor _PC_Monitor;
private PC_Host _PC_Host;

    public PC_Facade()
    {
        _PC_Monitor = new PC_Monitor();
        _PC_Host = new PC_Host();
    }

    public void Open()
    {
        Console.WriteLine("开机……");
        _PC_Monitor.Open();
        _PC_Host.Open();
    }

    public void Close()
    {
        Console.WriteLine("关机……");
        _PC_Host.Close();
        _PC_Monitor.Close();
    }
}

用户测试代码:
class Client
{
///
/// 用户测试类
///
///
static void Main(string[] args)
{
PC_Facade pc_facade = new PC_Facade();
//开机
pc_facade.Open();
//关机
pc_facade.Close();
Console.Read();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值