一、概念
①、什么是外观模式?
外观模式(Facade)亦称为“过程模式”,为子系统中的一组接口提供一个一致的界面,这个外观类为子系统提供一个共同的对外接口,客户对象通过一个外观接口读写子系统中各接口的数据资源。
②、什么情况下用外观模式?
(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
③、外观模式的作用?
(1)实现了子系统与客户端之间的松耦合关系。
(2)客户端屏蔽了系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。
④、外模模式的具体应用?
三层向七层的转换。
二、图
①、外观模式结构图
②、拓展图
③、购买基金外观模式类图
三、代码
①、代码类图
②、代码
//客户不用看到内在的运作,直接看到外表的展示结果即可。
class Program
{
static void Main(string[] args)
{
Fund fund = new Fund(); //用Fund类实例化对象fund,其实是调取了Fund类中的构造函数,实例化了所有基金类控制下的股票,国债,房地产对象。
fund.BuyFund(); //调取fund对象的BuyFund()方法,其实是调取了fund对象中所有子系统的Buy方法
fund.SellFund(); //调取fund对象的SellFund()方法
Console.ReadKey();
}
}
//Fund类中引用了所有的子系统(股票,国债,房地产),客户端调取Fund类时,Fund类调取各个子系统。
class Fund
{
Stock1 gu1; //声明了一个Stock1类型的变量gu1,没有new的时候值默认为null,只是占用了指针的位置,没有另外开辟空间
Stock2 gu2; //在Fund类中引用了Stock2对象,这是Fund类与Stock2类建立关联的代码表现。
Stock3 gu3;
NationalDebt1 gz1;
Realty1 fdc1;
public Fund() //当Fund类在实例化时触发此方法
{
gu1 = new Stock1(); //给Stock1类型的变量gu1,开辟内存空间,创建实例。
gu2 = new Stock2();
gu3 = new Stock3();
gz1 = new NationalDebt1();
fdc1 = new Realty1();
}
public void BuyFund()
{
gu1.Buy(); //调取gu1对象的Buy()方法
gu2.Buy();
gu3.Buy();
gz1.Buy();
fdc1.Buy();
}
四、拓展类
①、门面模式(很棒的一篇文章)
https://www.cnblogs.com/lthIU/p/5860607.html
②、类+类名;什么意思?
https://zhidao.baidu.com/question/876882503033761852.html