前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【设计模式-门面模式】

【设计模式-门面模式】

作者头像
Liusy
发布2020-09-01 16:22:59
3260
发布2020-09-01 16:22:59
举报
文章被收录于专栏:Liusy01Liusy01

学校的学生信息相关系统大家都用过,比如门户网、教务系统、图书管理系统等,一般需要用到某个系统,需要单独去登录,比如同时想去门户网和教务系统查询信息,需要在两个网站都进行登录。此时需要有一个统一用户管理系统,登录了此系统之后,想看其他网站就无需再次登录,这就是门面模式的例子。

门面模式属于结构型模式。类似与在平时给前端提供一个接口,接口里面调用了很多其他的服务。

一、定义

定义了一个高层接口,包含了对各个子系统的引用,客户端可以通过它访问各个子系统的功能。

二、实例

比如去购物网站下单的时候,会涉及到订单服务、支付服务、物流服务。购物网站提供了一个下单接口,在此接口内会调用这三个服务。

商品对象:

代码语言:javascript
复制
public class Produce {
    private String name;
    public Produce(String name) {
        this.name = name;
    }   
    //省略get/set
}

订单服务:

代码语言:javascript
复制
public class OrderService {
    public boolean submitOrder(Produce produce){
        System.out.println("提交购买:"+produce.getName()+"的订单信息");
        return true;
    }
}

支付服务:

代码语言:javascript
复制
public class PayService {
    public boolean payOrder(Produce produce){
        System.out.println("支付购买:"+produce.getName());
        return true;
    }
}

物流服务:

代码语言:javascript
复制
public class LogisticsService {
    public String getLogisticsNo(){
        String orderNO = UUID.randomUUID().toString();
        System.out.println("调用订单服务,获取订单号:"+orderNO);
        return orderNO;
    }
}

购物商城:提供了一个统一接口去访问这些服务

代码语言:javascript
复制
public class Mall{
    private OrderService orderService = new OrderService();
    private PayService payService = new PayService();
    private LogisticsService logisticsService = new LogisticsService();
    
    1、提供了一个统一接口 
    public void buyProduce(Produce produce){
        orderService.submitOrder(produce);
        payService.payOrder(produce);
        logisticsService.getLogisticsNo();
    }

}

测试类(客户端):

代码语言:javascript
复制
public static void main(String[] args) {
        Produce produce = new Produce("机械键盘");
        Mall mall = new Mall();
        mall.buyProduce(produce);
    }

结果:

类图:

三、源码实例

SpringMVC从页面发起请求到后台处理的过程。最重要的就是DispatchServlet的doDispatch方法。

先从HandlerMapping获取对应的Handler,然后获取HandlerAdapter,最终处理得到ModerAndView返回视图。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Liusy01 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档