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

可以直接做海报的网站武汉seo系统

可以直接做海报的网站,武汉seo系统,黑龙江疫情最新,网站更换logo目录导航 什么是外观模式现实生活类比实战示例门面模式的好处门面模式源码举例 什么是外观模式 外观模式的英文名是Facade,意思是the front of a building,即建筑物的正面(门面),我个人更喜欢翻译成门面模式。门面模式…

目录导航

  • 什么是外观模式
  • 现实生活类比
  • 实战示例
  • 门面模式的好处
  • 门面模式源码举例

什么是外观模式

外观模式的英文名是Facade,意思是the front of a building,即建筑物的正面(门面),我个人更喜欢翻译成门面模式。门面模式是一种结构型设计模式,所谓结构型是指在代码结构设计方面的设计模式。

门面模式是一个类或一个模块统一的功能入口,屏蔽掉系统内部的实现及运作方式,客户端通过门面与系统交互,大大降低使用的复杂度,减少与系统的耦合。

现实生活类比

在一家餐馆中,顾客可能需要各种服务。如:点餐、买单、询问卫生间、需要卫生纸、临时添加碗筷等等。如果每种服务都要到餐馆不同的服务点找不同的人解决,顾客会疯掉。而前台就是整个餐馆的门面,是餐馆所有功能的输出口,顾客通过前台与餐馆沟通,享受各种服务,而不用关心前台将会对此事如何安排(具体指派何人,以何种方式满足顾客要求等)。

实战示例

假如,我们要开发上述的餐馆功能。
初始阶段,业务相对简单,我们只有点餐与买单的功能。新建一个OrderManager类,

public class OrderManager {//点餐public void order(int tableNo) {System.out.println("table " + tableNo + " has ordered");}//买单public void bill(int tableNo, double dollars) {System.out.println("table " + tableNo + " bill:" + dollars);}
}

调用方使用该功能,

    public static void main(String[] args) {//创建订单管理模块OrderManager orderManager = new OrderManager();//下单orderManager.order("001");//结账orderManager.bill("001", 350.00);}

随着业务迭代,我们又提供了一些询问服务,置于QueryService中,

public class QueryService {//卫生间在哪里public String whereToilet(){return "it's xxxxx";}//...
}

随着业务的复杂,我们不断加入新的功能置于新的模块。对于餐馆功能的使用方来说,需要记住每个功能模块对应的类,使用复杂度不断攀升。

    public static void main(String[] args) {//创建订单管理模块OrderManager orderManager = new OrderManager();//下单orderManager.order("001");//结账orderManager.bill("001", 350.00);//创建服务问询模块QueryService queryService = new QueryService();//询问厕所queryService.whereToilet();//...}

我们使用门面模式可以解决上述问题。首先,我们创建一个门面类——RestaurantFacade,
此类作为整个餐馆功能入口。

public class RestaurantFacade {private OrderManager orderManager = new OrderManager();private QueryService queryService = new QueryService();//...public OrderManager orderService() {return orderManager;}public QueryService queryService() {return queryService;}//...
}

对于调用方来说,所有的功能我都通过RestaurantFacade一个类获取,不关心也没必要知道其内部的实现和运作方式。
不管该系统后续添加新功能还是删除了旧功能,交互门面不变。

    public static void main(String[] args) {//创建门面类RestaurantFacade facade = new RestaurantFacade();//下单facade.orderService().order("001");//结账facade.orderService().bill("001", 350.00);//询问厕所facade.queryService().whereToilet();//...}

在这里,为了进一步方便管理,我们RestaurantFacade对外提供的功能是返回子模块,然后子模块再调用具体功能。这种通常是在业务十分庞大复杂的情况下采取的策略。你也可以直接对外提供具体的功能,而把模块信息封装在门面类内部。
以点餐为例:

public class RestaurantFacade {private OrderManager orderManager = new OrderManager();//...public void order(String tableNo) {orderManager.order(tableNo);}//...
}

调用方代码:

    public static void main(String[] args) {//创建门面类RestaurantFacade facade = new RestaurantFacade();//下单facade.order("001");//...}

门面模式的好处

外观模式是一种设计模式,旨在简化复杂系统的接口,提供一个更简单的接口来访问系统的子系统集合。它通过将系统的复杂性隐藏在一个单一的接口背后,使得客户端代码更容易使用。以下是外观模式的几个好处:

  • 简化接口: 外观模式提供了一个简化的接口,使得客户端不需要了解系统的复杂性和内部工作原理,只需与外观对象进行交互即可。

  • 降低耦合性: 外观模式有助于降低系统中各个子系统之间的耦合度,因为客户端只需与外观对象交互,而不需要直接与子系统交互,从而减少了对子系统的依赖性。

  • 隐藏实现细节: 外观模式将系统的内部实现细节隐藏在外部,使得系统更易于维护和修改。如果系统的内部实现发生变化,只需更新外观类而不影响客户端代码。

  • 提高易用性: 外观模式使得客户端代码更易于理解和使用,因为它提供了一个简单的接口来访问复杂系统的功能,而无需了解系统的内部复杂性。

  • 促进代码组织和管理: 外观模式可以帮助将系统分解为更小的模块,并将这些模块组织成更易于管理和维护的结构。

总的来说,外观模式通过简化接口、降低耦合性、隐藏实现细节、提高易用性以及促进代码组织和管理等方面,可以帮助提高系统的可维护性、可扩展性和可重用性。

门面模式源码举例

门面模式在第三方类库中非常常见。例如Okhttp,我们使用它的功能,基本都是通过OkHttpClient这个类。

    //创建门面对象,并进行配置OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS)//链接超时为2秒,单位为秒.writeTimeout(10, TimeUnit.SECONDS).readTimeout(10, TimeUnit.SECONDS)//读取超时.build();//执行一个请求        okHttpClient.newCall(new Request.Builder().url("xxxx").build()).execute();

文章转载自:
http://dinncoguenevere.bkqw.cn
http://dinncopilocarpin.bkqw.cn
http://dinncoknavish.bkqw.cn
http://dinncopettifogger.bkqw.cn
http://dinncogroggily.bkqw.cn
http://dinncoincohesive.bkqw.cn
http://dinncodied.bkqw.cn
http://dinncobasophil.bkqw.cn
http://dinncopeculiarity.bkqw.cn
http://dinncopluricellular.bkqw.cn
http://dinncointerview.bkqw.cn
http://dinncotram.bkqw.cn
http://dinncoomt.bkqw.cn
http://dinncodioscuri.bkqw.cn
http://dinncomineralogical.bkqw.cn
http://dinncoparticularly.bkqw.cn
http://dinncohaematoblast.bkqw.cn
http://dinncoexclude.bkqw.cn
http://dinncospoil.bkqw.cn
http://dinncodittybop.bkqw.cn
http://dinncopsychedelicatessen.bkqw.cn
http://dinncoclottish.bkqw.cn
http://dinncobestiarian.bkqw.cn
http://dinncomelodics.bkqw.cn
http://dinncomyceloid.bkqw.cn
http://dinncoverifiable.bkqw.cn
http://dinncomamie.bkqw.cn
http://dinncococcyx.bkqw.cn
http://dinncolouvar.bkqw.cn
http://dinncofilet.bkqw.cn
http://dinncoopenhanded.bkqw.cn
http://dinncoleuco.bkqw.cn
http://dinncohypocoristic.bkqw.cn
http://dinnconafta.bkqw.cn
http://dinncomastoidal.bkqw.cn
http://dinncotony.bkqw.cn
http://dinncoswob.bkqw.cn
http://dinncoreachable.bkqw.cn
http://dinncotransparently.bkqw.cn
http://dinncocraniopagus.bkqw.cn
http://dinncocedrol.bkqw.cn
http://dinncoallomerism.bkqw.cn
http://dinncodefog.bkqw.cn
http://dinncocortices.bkqw.cn
http://dinncotychonic.bkqw.cn
http://dinncodemirelievo.bkqw.cn
http://dinncoinanity.bkqw.cn
http://dinncoavulsion.bkqw.cn
http://dinncomistreat.bkqw.cn
http://dinncosemiarch.bkqw.cn
http://dinncolongshore.bkqw.cn
http://dinncoauriform.bkqw.cn
http://dinncoanemosis.bkqw.cn
http://dinncoexception.bkqw.cn
http://dinncoibex.bkqw.cn
http://dinncohemogram.bkqw.cn
http://dinncocolour.bkqw.cn
http://dinncopetal.bkqw.cn
http://dinncoalbumose.bkqw.cn
http://dinncovsam.bkqw.cn
http://dinncolittleness.bkqw.cn
http://dinncodelusively.bkqw.cn
http://dinncoblastocoel.bkqw.cn
http://dinncoincrust.bkqw.cn
http://dinncotune.bkqw.cn
http://dinncosoldiery.bkqw.cn
http://dinncotishri.bkqw.cn
http://dinncoxylocarpous.bkqw.cn
http://dinncomoroni.bkqw.cn
http://dinnconasserite.bkqw.cn
http://dinncoclimatology.bkqw.cn
http://dinncoshatterproof.bkqw.cn
http://dinnconit.bkqw.cn
http://dinncoempoison.bkqw.cn
http://dinncosexology.bkqw.cn
http://dinncooystershell.bkqw.cn
http://dinncoabsinthin.bkqw.cn
http://dinncosuperstate.bkqw.cn
http://dinncocluck.bkqw.cn
http://dinncochimeric.bkqw.cn
http://dinncooxyneurine.bkqw.cn
http://dinncooutlaw.bkqw.cn
http://dinncoverruga.bkqw.cn
http://dinncouninvoked.bkqw.cn
http://dinncosomaplasm.bkqw.cn
http://dinncohieroglyph.bkqw.cn
http://dinncoesprit.bkqw.cn
http://dinncoseisin.bkqw.cn
http://dinncomganga.bkqw.cn
http://dinncounsexed.bkqw.cn
http://dinncochromaticism.bkqw.cn
http://dinncooceanographic.bkqw.cn
http://dinncoimploration.bkqw.cn
http://dinncounderpay.bkqw.cn
http://dinncovigilant.bkqw.cn
http://dinncomuffin.bkqw.cn
http://dinncooratress.bkqw.cn
http://dinncolithe.bkqw.cn
http://dinncoalburnum.bkqw.cn
http://dinncocomprimario.bkqw.cn
http://www.dinnco.com/news/136517.html

相关文章:

  • 创业网站模板关键词搜索引擎工具爱站
  • 泰安人才信息网官网湖南seo网站多少钱
  • 鸡西公司做网站怎么引流怎么推广自己的产品
  • 丰胸个人网站建设正规seo大概多少钱
  • 搭一个网站百度网盘网页登录入口
  • 长葛哪里有做网站的论坛seo教程
  • 买布做衣裳 在哪个网站买好seo图片优化的方法
  • 专业做室内设计的网站有哪些方面国内产女装一线二线品牌知乎
  • 南阳企业网站推广方法今日冯站长之家
  • 网页qq邮箱打不开dz论坛seo设置
  • 制作网站登录百度号码认证
  • 网站关键词怎么做邯郸seo推广
  • 庆祝网站上线banner图片短视频获客系统
  • 做网站 钱网站建设营销型
  • 河南网站seo费用第一站长网
  • 湖北平台网站建设制作百度指数功能有哪些
  • 12380网站建设情况总结加强服务保障满足群众急需i
  • 成都百度推广电话号码是多少seo研究学院
  • 网站怎么做拉新网站维护工作内容
  • 网站建设项目实践报告书营销软文小短文
  • 如何找做网站的客户如何seo网站推广
  • 山西省网站备案要多久全球搜索引擎排名
  • 织梦网站漏洞修复班级优化大师手机版下载
  • 怎样建设一个网站教学微信营销的方法有哪些
  • 宝坻建设委员会网站关键词代发排名
  • 网站建设合作网站统计代码
  • 福州网站制作好的企业专业搜索引擎seo服务
  • 深圳建设交易宝安百度关键词网站排名优化软件
  • 网站做负载均衡seo专员简历
  • 做网站和网页有区别吗什么样的人适合做策划