外观模式(代码片段)

linbq1911 linbq1911     2023-02-19     210

关键词:

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)子系统越来越复杂,增加外观模式提... 查看详情