外观模式

简介: 外观模式

今天学习了外观模式,感觉收获颇大,所以赶紧做个总结,为大家分享一下!


当提到“外观”两个字的时候,脑海中想象到的是一个东西的表面,内部构造是看不到的,那么这个外观模式跟现实生活中是差不多的,个人认为的。简单的来说就是客户端访问代码的时候直接访问的是一个中间者,至于中间者的背后是什么样的,不必知道,但是得到的效果是一样的,只是有一个中间者来和客户交流。


好处:增加外观,可以提供一个简单的接口,减少类与类之间的依赖。如下图:


0c4a2116b046226c83a07ffb4f2eb2fe_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwOTE1NQ==,size_16,color_FFFFFF,t_70.png


左部分是客户直接跟类沟通,右边是客户跟一个中间者沟通,这样从表面上看起来是非常清晰和详细的。


就比如股票和基金一样,把股票归为基金的一种,直接购买基金的层面会多一些。所以基金可以在这里充当一个中间者。


首先得把基金下面的小类列出来

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 Stock3
        {
            public void Sell()
            {
                Console.WriteLine("股票3卖出");
            }
            public void buy()
            {
                Console.WriteLine("股票2买入");
            }
        }
        //国债1
        class NationalDebt1
        {
            public void Sell()
            {
                Console.WriteLine("国债1卖出");
            }
            public void Buy()
            {
                Console.WriteLine("国债1买入");
            }
        }
        class Realty1
        {
            public void Sell()
            {
                Console.WriteLine("房地产1卖出");
            }
            public void Buy()
            {
                Console.WriteLine("房地产1买入");
            }
        }

然后再有一个中间者“基金类”,然后基金可以买卖,这就增加了买卖两者方法,在基金类种要把所有的股票等类型,放到基金中

class Fund
    {
        Stock1 gu1;
        Stock2 gu2;
        Stock3 gu3;
        NationalDebt1 nd1;
        Realty1 rt1;
        public Fund()
        {
            gu1 = new Stock1();
            gu2 = new Stock2();
            gu3 = new Stock3();
            nd1 = new NationalDebt1();
            rt1 = new Realty1();
        }
        public void ButFund() 
        {
            gu1.Buy();
            gu2.buy();
            gu3.buy();
            nd1.Buy();
            rt1.Buy();
        }
        public void SellFund()
        {
            gu1.Sell();
            gu2.Sell();
            gu3.Sell();
            nd1.Sell();
            rt1.Sell();
        }
    }

在主函数中直接实例化基金即可

 static void Main(string[] args)
        {
            Fund jijin = new Fund();
            //基金购买
            jijin.ButFund();
            //基金赎回
            jijin.SellFund();
            Console.Read();
        }

从主函数看减少而代码的冗余,而且比较清晰,想要达到的目的也不会少


目录
打赏
0
0
0
0
3
分享
相关文章
我学会了,外观模式
外观模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
149 0
我学会了,外观模式
2023-6-27-第九式外观模式
2023-6-27-第九式外观模式
95 0
C++外观模式
简述 外观模式(Facade Pattern)又称为门面模式,属于结构型模式。Façade 为子系统中的一组接口提供了一个统一的高层接口,该接口使得子系统更加容易使用。 简述 模式结构 优缺点 适用场景 案例分析 代码实现 版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820 模式结构 UM
1323 0
17.外观模式
 1外观模式的核心内容是: A:多个子系统的类 B:通过一个统一的门面进行管理 2外观模式的作用:让各各子类的运行由一个类统一进行管理。 3外观模式具体描述 门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。 门面模式提供一个高层次的接口,使得子系统更易于使用。 每一个子系统只有一个门面类,而且此门面类只有一个实例,
1040 0
|
9月前
|
结构型 外观模式
结构型 外观模式
43 0
C#一分钟浅谈:组合模式与外观模式
【10月更文挑战第15天】本文介绍了面向对象设计模式中的组合模式和外观模式。组合模式通过树形结构表示“部分-整体”的层次关系,适用于文件系统、图形界面等场景;外观模式提供统一接口简化复杂系统的使用,适用于视频播放器等多模块系统。文章详细解释了这两种模式的基本概念、应用场景、实现方式及常见问题和解决方法,帮助读者更好地理解和应用。
58 9

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等