关键词:
1.定义:又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口;
外观模式定义了一个高层接口,让子系统更容易使用。
2.类型:结构型
3.适用场景:子系统越来越复杂,增加外观模式提供简单调用接口;
构建多层系统结构,利用外观对象作为每层的入口,简化层间调用。
4.优点:简化了调用过程,无需了解深入子系统,防止带来风险;
减少系统依赖、松散耦合;更好的划分访问层次;
符合迪米特法则,即最少知道原则。
5.缺点:增加子系统、扩展子系统行为容易引入风险;不符合开闭原则。
6.相关设计模式:中介者模式、单例模式、抽象工厂模式。
7.实例目录package
8.实例UML类图
9.代码
1 package com.geely.design.pattern.structural.facade; 2 3 public class PointsGift 4 private String name; 5 6 public PointsGift(String name) 7 this.name = name; 8 9 10 public String getName() 11 return name; 12 13
1 package com.geely.design.pattern.structural.facade; 2 3 public class QualifyService 4 public boolean isAvailable(PointsGift pointsGift) 5 System.out.println("校验" + pointsGift.getName() + "积分资格通过,库存通过"); 6 return true; 7 8
1 package com.geely.design.pattern.structural.facade; 2 3 public class PointsPaymentService 4 public boolean pay(PointsGift pointsGift) 5 //扣减积分 6 System.out.println("支付"+pointsGift.getName()+" 积分成功"); 7 return true; 8 9
1 package com.geely.design.pattern.structural.facade; 2 3 public class ShippingService 4 public String shipGift(PointsGift pointsGift) 5 //物流系统的对接逻辑 6 System.out.println(pointsGift.getName() + "进入物流系统"); 7 String shippingOrderNo = "666"; 8 return shippingOrderNo; 9 10
1 package com.geely.design.pattern.structural.facade; 2 3 public class GiftExchangeService 4 private QualifyService qualifyService; 5 private PointsPaymentService pointsPaymentService; 6 private ShippingService shippingService; 7 8 /*public void setQualifyService(QualifyService qualifyService) 9 this.qualifyService = qualifyService; 10 11 12 public void setPointsPaymentService(PointsPaymentService pointsPaymentService) 13 this.pointsPaymentService = pointsPaymentService; 14 15 16 public void setShippingService(ShippingService shippingService) 17 this.shippingService = shippingService; 18 */ 19 20 public void giftExchange(PointsGift pointsGift) 21 if(qualifyService.isAvailable(pointsGift)) 22 if(pointsPaymentService.pay(pointsGift)) 23 String shippingOrderNo = shippingService.shipGift(pointsGift); 24 System.out.println("物流系统下单成功,订单号是:"+shippingOrderNo); 25 26 27 28
1 package com.geely.design.pattern.structural.facade; 2 3 public class Test 4 public static void main(String[] args) 5 PointsGift pointsGift = new PointsGift("T恤"); 6 GiftExchangeService giftExchangeService = new GiftExchangeService(); 7 /*giftExchangeService.setPointsPaymentService(new PointsPaymentService()); 8 giftExchangeService.setQualifyService(new QualifyService()); 9 giftExchangeService.setShippingService(new ShippingService());*/ 10 11 giftExchangeService.giftExchange(pointsGift); 12 13
设计模式之-外观模式(facadepattern)(代码片段)
外观模式外观模式(FacadePattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为... 查看详情
设计模式之外观模式(代码片段)
#外观模式#为子系统中的一组接口提供一个一致的界面成为外观模式,外观模式定义了一个高层接口,这个接口使得这一子系统更容易使用#如下压缩模块、ORM等fromosimportpathimportloggingclassZIPModel:"""ZIP模块,负责ZIP文件的压缩与解... 查看详情
外观模式(门面模式)(代码片段)
//飞机publicclassPlanepublicvoidbuyTicket()System.out.println("订购飞机票");//火车publicclassTrainpublicvoidbuyTicket()System.out.println("订购火车票");//景点publicclassScenerypublicvoidbuyTicket()System.ou 查看详情
12外观模式facade(代码片段)
一、什么是外观模式 Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。 二、... 查看详情
设计模式——外观模式(代码片段)
模式介绍外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的... 查看详情
设计模式-外观模式(代码片段)
本片文章主要介绍外观模式。 外观模式:为子系统中一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 我们先看下结构图: 下面我们就以这... 查看详情
设计模式(10)外观模式(代码片段)
外观模式(或门面模式、包装模式)是设计模式中非常朴素地体现面向对象“封装”概念的模式,它的基本原理是将复杂的内部实现以统一接口的方式暴露出来,最大程度地减少客户程序对某些子系统内部众多对象的依赖... 查看详情
外观模式(门面模式)(代码片段)
文章目录外观模式(门面模式)示例相关的设计模式使用典范参考外观模式(门面模式)定义:它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用类型:结构型适用场景... 查看详情
外观模式(代码片段)
2019年3月27日09:03:40外观模式(facadepattern)定义纵然身体里每个细胞都复杂得仿佛是一个宇宙,但是给人第一印象的你帅气的脸。外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使... 查看详情
设计模式-外观模式(代码片段)
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。类似前台、呼... 查看详情
11.外观模式(代码片段)
外观模式1.影院管理项目2.传统方式解决影院管理3.外观模式基本介绍4.外观模式解决影院管理5.mybatis外观模式设计案例6.外观模式的注意事项1.影院管理项目组建一个家庭影院:DVD播放器、投影仪、自动屏幕、环绕立体声、爆... 查看详情
大话设计模式-外观模式(代码片段)
外观模式外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观系统完美的体现了依赖倒转原则和迪米特法则的思想,所以是非常常用的模式之一。 ... 查看详情
结构型模式之外观模式(代码片段)
外观模式(FacadePattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式... 查看详情
设计模式-外观模式(代码片段)
publicinterfaceIYunSuandoublegetResult(intnum1,intnum2);publicclassjia:IYunSuanpublicdoublegetResult(intnum1,intnum2)returnnum1+num2;publicclassjian:IYunSuanpublicdoublegetResult(intnum1,intnum 查看详情
外观模式(代码片段)
前言 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义一个高层的接口,这个接口使得这一子系统更加容易使用。一、子类 子类系统负责处理Facade对象指派的任务,子类中没有Facade的任何信息... 查看详情
设计模式之外观模式(代码片段)
本文通过老王改造小王公司的整体架构来说明外观模式,所谓的外观模式其实就是在各种复杂的子系统中抽象出来一个接口,隐藏具体的实现细节,调用方调用时只需要调用接口即可。为了加深理解我们会选出外观模式在源码中... 查看详情
外观模式(代码片段)
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 何时使用外观模式? 这要分三个阶段来说,首先,在设计初期阶段,应该要有... 查看详情
设计模式——外观模式(代码片段)
外观模式定义又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口外观模式定义了一个高层接口,让子系统更容易使用类型:结构性使用场景(1)子系统越来越复杂,增加外观模式提... 查看详情