iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java设计模式中的门面模式详解
  • 212
分享到

Java设计模式中的门面模式详解

2024-04-02 19:04:59 212人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录门面模式概述应用场景目的优缺点主要角色门面模式的基本使用创建子系统角色创建外观角色客户端调用门面模式实现商城下单库存系统支付系统物流系统入口系统客户端调用门面模式 概述 门面模式

门面模式

概述

门面模式(Facade Pattern)又叫外观模式,属于结构性模式。

它提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。

客户端不需要知道系统内部的复杂联系,只需定义系统的入口。即在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。

应用场景

为复杂的模块或子系统提供外界访问的模块。

子系统相对独立。 

预防额外操作带来的风险。

目的

降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。

优缺点

优点:

减少系统相互依赖。 

提高灵活性。 

提高安全性。

缺点:

不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。也就是说系统可以提供新的功能模块而不必进行修改。

主要角色

门面模式主要包含2种角色:

1.外观角色(Facade):

外观角色也称门面角色,系统对外的统一接口;

2.子系统角色(SubSystem):

可以同时有一个或多个SubSystem。每个SubSytem都不是一个单独的类,而是一个类的集合

SubSystem并不知道Facade的存在,对于SubSystem而言,Facade只是另一个客户端而已(即Facade对SubSystem透明)

门面模式的基本使用

创建子系统角色

创建2个创建子系统角色:SubSystemA 与SubSystemB

public class SubSystemA {
    public void subSystem() {
        System.out.println("subSystem A");
    }
}
public class SubSystemB {
    public void subSystem() {
        System.out.println("subSystem B");
    }
}

创建外观角色

public class Facade {
    private SubSystemA a = new SubSystemA();
    private SubSystemB b = new SubSystemB();
    
    public void subSystemA() {
        this.a.subSystem();
    }
    
    public void subSystemB() {
        this.b.subSystem();
    }
}

客户端调用

    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.subSystemA();
        facade.subSystemB();
    }

门面模式实现商城下单

如商城系统中的下单,下单过程可能涉及多个模块子系统的联动操作,如果分别发送网络请求各个模块子系统的接口,会增加一定复杂度与额外的网络请求。

此时可以采取门面模式,将所有相关接口整合到一个接口中,由后端提供一个接口给前端调用。

假设在一个商城系统中,涉及库存系统、支付系统、物流系统、入口系统。用户下单时进行校验库存,验证支付,最后发货这一整个过程串联起来,提供一个统一接口供客户端调用。

库存系统

public class StockSys {
    
    public Boolean verify(){
        if (Math.random()*10 >5) {
            System.out.println("StockSys verify success");
            return true;
        }
        System.out.println("StockSys verify fail");
        return  false;
    }
}

支付系统

public class PaySys {
    
    public Boolean pay() {
        if (Math.random()*10 >2) {
            System.out.println("PaySys pay success");
            return true;
        }
        System.out.println("PaySys pay fail");
        return  false;
    }
}

物流系统

public class LoGIStiCSSys {
    
    public void ship() {
        System.out.println("logistics ship");
    }
}

入口系统

public class MySys {
    StockSys stockSys = new StockSys();
    PaySys paySys = new PaySys();
    LogisticsSys logisticsSys = new LogisticsSys();
    public void order() {
        if (stockSys.verify()) {
            if (paySys.pay()) {
                logisticsSys.ship();
            }
        }
    }
}

客户端调用

    public static void main(String[] args) {
        new MySys().order();
    }

StockSys verify success
PaySys pay success
logistics ship

StockSys verify fail

StockSys verify success
PaySys pay fail

到此这篇关于Java设计模式中的门面模式详解的文章就介绍到这了,更多相关Java门面模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java设计模式中的门面模式详解

本文链接: https://www.lsjlt.com/news/168205.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解java设计模式中的门面模式
    门面模式又叫外观模式(Facade Pattern),主要用于隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。 我们知道电视剧操作很简单,但是里面的设计和原理很少人明...
    99+
    2022-11-13
  • Java设计模式中的门面模式详解
    目录门面模式概述应用场景目的优缺点主要角色门面模式的基本使用创建子系统角色创建外观角色客户端调用门面模式实现商城下单库存系统支付系统物流系统入口系统客户端调用门面模式 概述 门面模式...
    99+
    2022-11-13
  • java设计模式中的门面模式怎么实现
    这篇文章主要介绍“java设计模式中的门面模式怎么实现”,在日常操作中,相信很多人在java设计模式中的门面模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java设计模式中的门面模式怎么实现”的疑...
    99+
    2023-06-29
  • Java设计模式——工厂设计模式详解
    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。工厂模式的形态工厂模式主要用一下几种形态:简单工厂(Simple Factory)。2:工厂方法(Factory Method)。3:抽象工厂(Abstract...
    99+
    2023-05-30
    java 设计模式 ava
  • 详解Java设计模式中的装饰模式
    目录一、装饰模式的定义和特点二、装饰模式的结构三、咖啡点单案例演示四、总结一、装饰模式的定义和特点 在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在...
    99+
    2022-11-12
  • Java设计模式中的外观模式详解
    目录模式介绍UML类图外观模式案例:外观模式的注意事项和细节模式介绍 外观模式(Facade) ,也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定...
    99+
    2022-11-13
  • Java结构型模式之门面模式详解
    目录一.介绍二.UML类图三.具体代码四.使用场景五.优缺点六.在tomcat中的应用一.介绍 门面模式(Facade Pattern)属于结构型模式。门面模式又叫作外观模式,通过给...
    99+
    2023-02-17
    Java门面模式 Java结构型模式
  • java设计模式--策略模式详解
    目录策略模式Demo代码:总结策略模式 策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。用算法族分别封装起来...
    99+
    2022-11-12
  • java设计模式-组合模式详解
    目录组合模式Demo代码:总结组合模式 组合模式(Composite Pattern)又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来...
    99+
    2022-11-12
  • java设计模式--原型模式详解
    目录引例原型模式浅拷贝在原先Sheep类基础上实现Cloneable接口,重写clone方法。客户端调用Sheep类新添的Cow类客户端调用克隆深拷贝1.Cow类也实现Cloneab...
    99+
    2022-11-12
  • java设计模式--桥接模式详解
    目录引例桥接模式实战示例代码:总结引例 需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。 先来...
    99+
    2022-11-12
  • Java设计模式之java中介者模式详解
    目录引言介绍角色数据库同步数据案例不使用中介者模式的数据同步方案,各数据源维护各自的同步作业其实这样已经实现了我们的需求,但是存在一些问题中介者模式来重构,将数据同步的功能迁移到中介...
    99+
    2022-11-12
  • java 中设计模式(装饰设计模式)的实例详解
    java 中设计模式(装饰设计模式)的实例详解应用场景:在不对原有对象类进行修改的基础上,给一个或多个已有的类对象提供增强额外的功能. 我觉得可以从字面理解,装饰,装饰房子。房子可以看成原有的类。等于你把一个已经建好的房子按照自己的想法再装...
    99+
    2023-05-31
    java 装饰模式 ava
  • Java设计模式中的迭代器模式详解
    目录一 定义二 UML类图三 代码实例四 迭代器模式的优缺点4.1 优点4.2 缺点五 使用场景六 JDK迭代器的运用一 定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露...
    99+
    2023-02-08
    Java迭代器模式 Java设计模式
  • Java中常用的设计模式之模板模式详解
    目录优点缺点使用场景一、实现方式1、游戏抽象类2、LOL游戏类3、CF游戏类二、测试总结优点 封装不变部分,扩展可变部分。 提取公共代码,便于维护。 行为由父类控制,子类实现。 缺点...
    99+
    2022-11-13
  • Java设计模式之java解释器模式详解
    目录介绍角色计算器案例UML图深入挖掘构建的语法树解释器模式总结解释器模式的典型应用Spring EL表达式中的解释器模式参考文章总结介绍 解释器模式(Interpreter Pat...
    99+
    2022-11-12
  • Java设计模式之java状态模式详解
    目录状态模式的结构状态模式的角色 示例代码适用场景投票案例认识状态模式状态和行为行为的平行性环境和状态处理对象状态模式优点状态模式的缺点状态模式和策略模式对比参考文章 总结...
    99+
    2022-11-12
  • Java设计模式之java策略模式详解
    目录为什么使用策略模式?策略模式包含角色策略模式的类图排序案例策略模式的优点策略模式的缺点适用场景源码分析策略模式的典型应用Java Comparator 中的策略模式参考文...
    99+
    2022-11-12
  • Java设计模式之java命令模式详解
    目录命令模式的介绍角色订单案例命令模式的优点适用场景示例代码应用宏命令----执行一组命令示例代码总结JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色...
    99+
    2022-11-12
  • Java设计模式之java桥接模式详解
    目录一、什么是桥接模式:二、UML结构图:三、代码实现:四、JDBC源码解析-桥接模式:1、源码分析:2、源码类图:3、对 JDBC 的观点:参考博客:总结一、什么是桥接模式: 桥接...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作