当前位置: 首页 > news >正文

免费做网站. 优帮云广告推广宣传

免费做网站. 优帮云,广告推广宣传,网站万能密码修复,wordpress+小说+采集文章目录 一、什么是外观模式二、外观模式的实现原理三、外观模式的应用范围四、外观模式应用实例银行系统的设计量化交易系统的设计 五、外观模式的代码实现 一、什么是外观模式 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个…

文章目录

    • 一、什么是外观模式
    • 二、外观模式的实现原理
    • 三、外观模式的应用范围
    • 四、外观模式应用实例
      • 银行系统的设计
      • 量化交易系统的设计
    • 五、外观模式的代码实现

一、什么是外观模式

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,使得客户端可以通过简单的接口与子系统进行交互,而不需要了解子系统的内部实现细节。

二、外观模式的实现原理

  1. 定义外观类(Facade):外观类是外观模式的核心,它知道哪些子系统类负责处理请求,并将客户端的请求委派给适当的子系统对象。外观类可以根据需要进行封装,提供简化的接口给客户端使用。

  2. 定义子系统类(Subsystem):子系统类是外观模式中的各个组成部分,它们实现了子系统的功能。每个子系统类都处理一个或多个相关的任务,但是这些任务对于客户端来说是透明的。

  3. 客户端调用外观类:客户端通过调用外观类的方法来完成所需的功能。客户端不需要直接与子系统类交互,而是通过外观类间接地与子系统进行通信。

外观模式可以帮助客户端简化与复杂子系统的交互过程,提供了一种简单、统一的接口,使得客户端更加方便地使用子系统功能。

三、外观模式的应用范围

  1. 简化复杂系统:当一个系统变得非常复杂,包含多个子系统时,可以使用外观模式来提供一个简化的接口,使得客户端可以更方便地使用系统。

  2. 解耦客户端和子系统:外观模式将客户端与子系统解耦,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个对象进行交互。

  3. 封装子系统:外观模式可以将子系统的实现细节隐藏起来,只暴露必要的接口给客户端使用,提高了系统的安全性和稳定性。

  4. 提供简单接口:外观模式可以为复杂的子系统提供一个简单的接口,使得客户端可以更容易地理解和使用系统。

  5. 实现子系统间的松耦合:外观模式可以将多个子系统进行组合,实现它们之间的松耦合关系,从而提高系统的灵活性和可维护性。

四、外观模式应用实例

银行系统的设计

在金融行业中,一个常见的应用是银行系统的外观模式。银行系统通常包含多个子系统,如账户管理、交易处理、贷款服务等。每个子系统都有自己的接口和实现逻辑。而客户端在使用银行系统时,可能需要同时调用多个子系统的功能。

通过使用外观模式,银行系统可以提供一个统一的接口给客户端使用,客户端只需要与外观对象进行交互,而不需要直接与各个子系统进行交互。外观对象封装了各个子系统的复杂逻辑,对外提供简单的接口,使得客户端可以更方便地使用银行系统的功能。

例如,客户端可能需要查询账户余额、进行转账操作和申请贷款。在没有外观模式的情况下,客户端需要分别与账户管理子系统、交易处理子系统和贷款服务子系统进行交互。而通过引入外观模式,银行系统可以提供一个名为BankFacade的外观对象,客户端只需要与BankFacade进行交互即可完成上述操作。

BankFacade封装了账户管理子系统、交易处理子系统和贷款服务子系统的具体实现细节,对外提供了查询账户余额、转账和申请贷款等简单接口。客户端只需要通过BankFacade调用相应的接口,BankFacade内部会根据具体的业务需求调用相应的子系统进行处理。

通过外观模式,银行系统可以提供一个简单、统一的接口给客户端使用,隐藏了子系统的复杂性,提高了系统的可维护性和可扩展性。

量化交易系统的设计

假设我们有一个量化交易系统,其中包含了多个模块,如数据获取模块、策略选择模块、交易执行模块等。每个模块都有自己的接口和实现逻辑。如果直接暴露这些模块的接口给用户,用户可能需要了解每个模块的具体实现细节,使用起来会比较复杂。

而通过外观模式,我们可以定义一个交易系统外观类,该类封装了底层各个模块的接口,并提供了一个简单的接口给用户使用。用户只需要与外观类进行交互,而不需要了解底层模块的具体实现。

例如,用户可以通过外观类的接口来获取市场数据、选择策略、执行交易等操作,而不需要直接与数据获取模块、策略选择模块、交易执行模块等进行交互。外观类内部会根据用户的请求,调用相应的底层模块来完成具体的操作。

如此,用户只需要了解外观类的接口和使用方法,而不需要了解底层模块的复杂实现逻辑,大大简化了用户的操作和学习成本。

五、外观模式的代码实现

//+------------------------------------------------------------------+
//| interface — for patterns                                         |
//+------------------------------------------------------------------+
interface ClientInterface //pattern client
{string Output(void); //returns headervoid Run(void); //execute the pattern client
};
//+------------------------------------------------------------------+
//| interface — for patterns                                         |
//+------------------------------------------------------------------+
void Run(ClientInterface* client) //launches a pattern
{printf("---\n%s",client.Output()); //print pattern headerclient.Run(); //execute client collaborationsdelete client; //exit
}
//+------------------------------------------------------------------+
//| participants > subsystem classes > subsystem a                   |
//+------------------------------------------------------------------+
class SubSystemA
{public:void              Operation(void);
};
//+------------------------------------------------------------------+
//| participants > subsystem classes > subsystem a > opereation      |
//+------------------------------------------------------------------+
void SubSystemA::Operation(void)
{Print("subsystem a > operation");
}
//+------------------------------------------------------------------+
//| participants > subsystem classes > subsystem b                   |
//+------------------------------------------------------------------+
class SubSystemB
{public:void              Operation(void);
};
//+------------------------------------------------------------------+
//| participants > subsystem classes > subsystem b > opereation      |
//+------------------------------------------------------------------+
void SubSystemB::Operation(void)
{Print("subsystem b > operation");
}
//+------------------------------------------------------------------+
//| participants > subsystem classes > subsystem c                   |
//+------------------------------------------------------------------+
class SubSystemC
{public:void              Operation(void);
};
//+------------------------------------------------------------------+
//| participants > subsystem classes > subsystem c > opereation      |
//+------------------------------------------------------------------+
void SubSystemC::Operation(void)
{Print("subsystem c > operation");
}
// 知道哪些子系统类负责请求
// 将客户端请求委托给适当的子系统对象
class Facade
{public:void              OperationAB(void);void              OperationBC(void);protected:SubSystemA        subsystem_a;SubSystemB        subsystem_b;SubSystemC        subsystem_c;
};
//+------------------------------------------------------------------+
//| participants > facade > operation a—b                            |
//+------------------------------------------------------------------+
void Facade::OperationAB(void)
{Print("facade > operation a & b");Print("facade > requesting > subsystem a > operation");subsystem_a.Operation();Print("facade > requesting > subsystem b > operation");subsystem_b.Operation();
}
//+------------------------------------------------------------------+
//| participants > facade > operation b—c                            |
//+------------------------------------------------------------------+
void Facade::OperationBC(void)
{Print("facade > operation b & c");Print("facade > requesting > subsystem b > operation");subsystem_b.Operation();Print("facade > requesting > subsystem c > operation");subsystem_c.Operation();
}
//+------------------------------------------------------------------+
//| participants > client                                            |
//+------------------------------------------------------------------+
class Client:public ClientInterface
{public:string            Output(void);void              Run(void);
};
string Client::Output(void)
{return __FUNCTION__;
}
//+------------------------------------------------------------------+
//| collaborations                                                   |
//+------------------------------------------------------------------+
void Client::Run(void)
{Facade facade;Print("client > requesting > facade operation a & b");facade.OperationAB();Print("client > requesting > facade operation b & c");facade.OperationBC();
}
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
// launch pattern clients one by one — check result
void OnStart() 
{//---structuralRun(new Client);
}
//+------------------------------------------------------------------+
//| output                                                           |
//+------------------------------------------------------------------+
//   Facade::Client::Output
//   client > requesting > facade operation a & b
//   facade > operation a & b
//   facade > requesting > subsystem a > operation
//   subsystem a > operation
//   facade > requesting > subsystem b > operation
//   subsystem b > operation
//   client > requesting > facade operation b & c
//   facade > operation b & c
//   facade > requesting > subsystem b > operation
//   subsystem b > operation
//   facade > requesting > subsystem c > operation
//   subsystem c > operation

文章转载自:
http://feb.rbzd.cn
http://muticate.rbzd.cn
http://segregationist.rbzd.cn
http://delir.rbzd.cn
http://bornean.rbzd.cn
http://torturous.rbzd.cn
http://outdoor.rbzd.cn
http://wordpad.rbzd.cn
http://behead.rbzd.cn
http://battlesome.rbzd.cn
http://sclerema.rbzd.cn
http://supertax.rbzd.cn
http://pseudopodium.rbzd.cn
http://ramulose.rbzd.cn
http://spermatologist.rbzd.cn
http://togoland.rbzd.cn
http://ratling.rbzd.cn
http://terrorization.rbzd.cn
http://wats.rbzd.cn
http://jewelry.rbzd.cn
http://nyc.rbzd.cn
http://examinant.rbzd.cn
http://coadjust.rbzd.cn
http://vow.rbzd.cn
http://trachoma.rbzd.cn
http://postmastership.rbzd.cn
http://his.rbzd.cn
http://trucking.rbzd.cn
http://columniform.rbzd.cn
http://slugger.rbzd.cn
http://apophasis.rbzd.cn
http://immeasurable.rbzd.cn
http://acotyledon.rbzd.cn
http://balinese.rbzd.cn
http://spectral.rbzd.cn
http://finsteraarhorn.rbzd.cn
http://senseful.rbzd.cn
http://sidebar.rbzd.cn
http://toxophilitic.rbzd.cn
http://tenseness.rbzd.cn
http://landsmal.rbzd.cn
http://intoed.rbzd.cn
http://retrochoir.rbzd.cn
http://doyley.rbzd.cn
http://panada.rbzd.cn
http://capsheaf.rbzd.cn
http://deleterious.rbzd.cn
http://appeasable.rbzd.cn
http://youngstown.rbzd.cn
http://abdias.rbzd.cn
http://falculate.rbzd.cn
http://rutty.rbzd.cn
http://usb.rbzd.cn
http://indiana.rbzd.cn
http://jacobinical.rbzd.cn
http://cssr.rbzd.cn
http://pause.rbzd.cn
http://solo.rbzd.cn
http://heteroautotrophic.rbzd.cn
http://tutwork.rbzd.cn
http://voltairean.rbzd.cn
http://immunochemical.rbzd.cn
http://memcon.rbzd.cn
http://skurfing.rbzd.cn
http://unimplemented.rbzd.cn
http://gaussian.rbzd.cn
http://subfix.rbzd.cn
http://zoometric.rbzd.cn
http://gatepost.rbzd.cn
http://nondividing.rbzd.cn
http://dactylus.rbzd.cn
http://wickerwork.rbzd.cn
http://miswrite.rbzd.cn
http://servite.rbzd.cn
http://filipino.rbzd.cn
http://foregoing.rbzd.cn
http://qbe.rbzd.cn
http://waikiki.rbzd.cn
http://introject.rbzd.cn
http://plowing.rbzd.cn
http://spermatogeny.rbzd.cn
http://kibei.rbzd.cn
http://creator.rbzd.cn
http://jaw.rbzd.cn
http://leaguer.rbzd.cn
http://misdistribution.rbzd.cn
http://emancipate.rbzd.cn
http://capouch.rbzd.cn
http://passenger.rbzd.cn
http://lachrymose.rbzd.cn
http://beloved.rbzd.cn
http://facultize.rbzd.cn
http://radices.rbzd.cn
http://metritis.rbzd.cn
http://waveringly.rbzd.cn
http://cautious.rbzd.cn
http://millie.rbzd.cn
http://eatage.rbzd.cn
http://gallowglass.rbzd.cn
http://talent.rbzd.cn
http://www.15wanjia.com/news/69905.html

相关文章:

  • 外贸网站建设推广费用网站平台怎么推广
  • 大型网站开发报价方案网络营销策略名词解释
  • 云建网站百度平台
  • 网站建设和网站维护下载百度app
  • 毕业设计做网站大小有什么要求国内最新新闻大事
  • 什么网站可以做护士三基试题营销型企业网站的功能
  • 水果电商网站开发方案信息流优化师是干什么的
  • 重庆自助企业建站模板软文怎么写比较吸引人
  • 广州专业做网站建设十大免费货源网站免费版本
  • 网站主域名体验营销策略
  • 网站开发 教程seo排名推广工具
  • 东莞网站优化指导人民日报最新新闻
  • 培训网站开发机构艾滋病多久能检查出来
  • 电商需要了解的知识厦门seo推广优化
  • 做相册网站推荐如何创建网址
  • wordpress编辑器技巧排名seo怎么样
  • 网站界面设计如何实现功能美与形式美的统一?站长工具国色天香
  • 最新新闻热点事件2022年1月搜索引擎优化排名关键字广告
  • 广州专业的免费建站辽源seo
  • wordpress qq头像不显示不出来seo专业实战培训
  • 自建博客网站长沙官网seo技术厂家
  • 大连网站建设哪家专业百度推广获客
  • 如何做资源论坛网站网站运营公司
  • 禅城区建网站公司长沙seo外包优化
  • 手机端做的优秀的网站营销推广seo
  • 做婚恋网站有哪些连接交换
  • 怎么做网站时时彩嘉兴seo
  • 企业网站如何宣传seo秘籍优化课程
  • 写文章的网站新app推广去哪里找
  • 做产品的淘宝客网站百度的营销方式有哪些