外观模式

外观模式通过提供统一的高层接口,简化了子系统的使用。它在代码中表现为基金(Fund)外观类,封装了股票、国债、实体产权等子系统。应用场合包括系统设计初期的层次分离、开发阶段的复杂度管理和维护遗留系统的接口清晰化。结构图有助于直观理解模式的工作原理。
摘要由CSDN通过智能技术生成

外观模式:

     为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。是我脑子笨还是什么原因,看定义总是会被绕进去,还好有外观的结构图还有例子比较容易理解。

上代码:

    代码中股票、国债、实体产权是具体的子系统,外观模式为他们提供一个Fund外观类——界面、接口,该类了解所有子系统的方法和属性,因此能够将客户的请求传递给适当的子系统。

  class Program
    {
        //客户端,用户不需要了解股票等具体子类
        //买了基金之后不需要关心集体操作
        //由基金类将客户请求代理给适当的子系统对象
        static void Main(string[] args)
        {
            Fund jj = new Fund();
            jj.BuyFundd();
            jj.SellFund();
            Console.Read();
        }
    }
    #region 具体子类
    //子类中无父类的信息,没有引用父类
    class Stock1
 {
     public void Sell()
     {
         Console.WriteLine("股票1卖出");
     }
     public void Buy()
     {
         Console.WriteLine("股票1买入");
     }
 }
 class Stock2
 {
     public void Sell()
     {
         Console.WriteLine("股票2卖出");
     }
     public void Buy()
     {
         Console.WriteLine("股票2买入");
     }
 }
 class NationalDebt1
 {
     public void Sell()
     {
         Console.WriteLine("国债3卖出");
     }
     public void Buy()
     {
         Console.WriteLine("国债3买入");
     }
 }
class Realty1
{
    public void Sell()
    {
        Console.WriteLine("舍弃工厂");
    }
    public void Buy()
    {
        Console.WriteLine("拥有工厂");
    }
}
    #endregion
/// <summary>
    /// 基金类,需要了解所有股票、国债
    /// 的方法、属性
    /// </summary>
    class Fund
    {
        Stock1 ST1;
        Stock2 ST2;
        NationalDebt1 ND;
        Realty1 RY;
        public Fund ()
        {
            ST1 = new Stock1();
            ST2 = new Stock2();
            ND = new NationalDebt1();
            RY = new Realty1();
        }
        public void BuyFundd()
        {
            ST1.Buy();
            ST2.Buy();
            ND.Buy();
            RY.Buy();
        }
        public void SellFund()
        {
            ST1.Sell();
            ST2.Sell();
            ND.Sell();
            RY.Sell();
        }
        
    }

应用场合:

1、设计初期,有意识将不同的两个层分离,层与层间建立外观Facade,为复制子系统提供简单接口,降低耦合度。

2、开发阶段,新增、修改内容增加子系统的复杂度,增加外观Facade提供简单接口,减少相互间的依赖。

3、维护遗留的大型含有重要功能的系统时,为新系统增加一个外观Facade类,为遗留代码提供清晰的接口,让新系统与Facade交互,Facade与遗留代码交互。

结构图:


一张图胜过千言万语。

thanks for your time。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值