——————第2天—————————————————首先,肯德基提供许多基本的菜肴,例如鸡翅,汉堡,炸薯条,沙拉,可乐等。等等:尽管这些令人眼花dishes乱的菜肴很好,有些客户会选择犯有罪,并且不知道该选择什么。因此,肯德基将这些菜肴进行了一定的组合,并推出了各种套餐。例如,套餐,包括汉堡/薯条/可乐; B套餐,包括汉堡/鸡翅/沙拉/可乐:套餐不仅合理,而且相对便宜,顾客可以更方便地做出选择,而且餐厅的销售额也有所增加。 。为顾客提供餐饮服务的餐厅与团队发展项目之间有何相似之处?假设小辉正在维护一个低级模块的代码。该模块提供5个基本功能,这些功能被封装为5个接口:一天,团队中的程序Yuan Xiaohong跑到了Xiaohui停靠:几天后,Heaven,Xiaohong再次来到了Xiaohui停靠了:Xiaohui想法如下:所谓的“包装”指的是“包装”。这是底层细粒度接口的另一种组合。在保持底层接口不变的前提下,中间层为调用者提供了便利。这是门面模式的设计思想:为了使复杂的子系统易于使用,应该为子系统中的一组接口提供一个简单的接口。子系统的众多接口提供了简洁的高级接口。在上图中,几个SubSystem类对应于我们刚刚提到的基础基本功能,而Facade类对应于中间层,提供了“ package”。为呼叫者提供的服务。 public& nbsp; SubSystemA& nbsp; {& nbsp;& nbsp;& nbsp;& nbsp; void& nbsp; methodA(){& nbsp;& nbsp;& amp; nbsp; amp ; nbsp;& nbsp;& nbsp;& nbsp;& nbsp; System.out.println(“执行方法A”); & nbsp;& nbsp;& amp; amp; ; nbsp;}} public& nbsp; Facade& nbsp; {& nbsp;& nbsp;& nbsp;& nbsp; public& nbsp; void& nbsp; comboMethodA(){& nbsp; & nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; SubSystemA& nbsp; subSystemA& nbsp; =& nbsp; new& nbsp; SubSystemA();& ; nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; SubSystemB& nbsp; subSystemB& nbsp; =& nbsp; new& nbsp; SubSystemB( );& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; SubSystemD& nbsp; subSystemD& nbsp; =& nbsp;新  ; SubSystemD();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; subSyst emA.methodA();& nbsp;& nbsp; & nbsp;& nbsp;& nbsp;& nbsp; subSystemB.methodB();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; & nbsp;& nbsp; subSystemD.methodD();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; public ; void  comboMethodB(){& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; SubSystemE& nbsp; subSyste mE  =& nbsp;新的  SubSystemE(); & nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; SubSystemD& nbsp; subSystemD& ; nbsp; =& nbsp; SubSystemD();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;                                    & nbsp;& nbsp;" SubSystemB& nbsp; subSystemB& nbsp; =& nbsp; new& nbsp; SubSystemB();& nbsp;& nbsp;& nbsp;& nbsp;& b ; nbsp;& nbsp;& nbsp; subSystemE.methodE();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& n ; nbsp; subSystemD.methodD();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; subSystemB.methodB();& nbsp ;& nbsp;& nbsp;}} public& nbsp; class& nbsp; Client& nbsp; {& nbsp;& nbsp;& nbsp;& nbsp; public& nbsp; static& nbsp; nbsp; void& nbsp; main(String []& nbsp; args)& nbsp; {& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;   Facade  facade& nbsp; =& nbsp; new& nbsp; Facade();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;通过外观模式,调用组合的界面A& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;      正面。 comboMethodA();& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; //通过外观模式,调用组合接口B& nbsp ;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; facade.comboMethodB();& nbsp;&喜欢这篇文章的朋友,欢迎关注程序员小慧的官方账号,观看更多精彩的内容