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

设计模式之外观模式

文章目录

      • 一、概念
      • 二、场景
      • 三、实现
      • 四、优缺点

一、概念

  • 外观模式指的是客户端统一的入口

二、场景

  • 当客户端调用两个以上的对象来完成一系列的功能,可以使用外观模式。

三、实现

  • 条件
    • java
  • 场景
    • 以客户端访问聚合服务,聚合服务访问商品服务、订单服务和支付服务为场景。
  • 代码实现
    • 新建商品服务,类名:ProductServer
          package com.AppearancePattern;
          public class ProductServer {
              public ProductServer()
              {
                  System.out.print("商品服务!");
              }
          }    
      
    • 新建订单服务,类名:OrderServer
          package com.AppearancePattern;
          public class OrderServer {
              public  OrderServer()
              {
                  System.out.print("订单服务");
              }
          }    
      
    • 新建支付服务,类名:PayServer
          package com.AppearancePattern;
          public class PayServer {
              public  PayServer()
              {
                  System.out.print("支付服务!");
              }
          }    
      
    • 新建聚合服务,类名:PolymerizationServer
          package com.AppearancePattern;
          public class PolymerizationServer {
              private ProductServer productServer;
              private OrderServer orderServer;
              private PayServer payServer;
              public  PolymerizationServer()
              {
                  System.out.print("聚合服务!");
          
               }
               public  void BuyProduct()
               {
                   productServer = new ProductServer();
                   orderServer = new OrderServer();
                   payServer = new PayServer();
               }
          }  
      
    • 入口函数,类名:Main
          package com;
          
          import com.AppearancePattern.PolymerizationServer; 
          
          public class Main {
          
              public static void main(String[] args) { 
                  PolymerizationServer polymerizationServer = new PolymerizationServer();
                  polymerizationServer.BuyProduct ();
              }
          }    
      

四、优缺点

  • 优点
    • 保证客户端遵守开闭原则
    • 提高多个客户端的复用
  • 缺点
    • 导致系统的复杂性上升

相关文章:

  • 计网重点知识总结复习
  • 解除Excel限制编辑的两种方法
  • MOOC武大SAS——第一章作业
  • 进行ISO27001认证需要准备的几个阶段
  • 3322动态域名怎么解析?
  • 线上展厅怎样设计完美
  • Android修行手册 - GridView实践回忆
  • Spring DI和AOP简介
  • 以太坊改造完成,矿工要失业了?
  • dubbo拓展点机制(和对JDK SPI机制的优化)
  • HTML常用标签积累
  • 【一起学SQLite】--SQLite中一些与众不同的特性?(2-1)
  • A+文档丨Azure MySQL 数据库高可用性解析
  • 【Python基础】Numpy:切片和索引操作
  • 【PAT甲级】1004 Counting Leaves
  • 【Leetcode】101. 对称二叉树
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • PHP的Ev教程三(Periodic watcher)
  • Python3爬取英雄联盟英雄皮肤大图
  • Quartz初级教程
  • react-native 安卓真机环境搭建
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • zookeeper系列(七)实战分布式命名服务
  • 搭建gitbook 和 访问权限认证
  • 第2章 网络文档
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 时间复杂度与空间复杂度分析
  • 使用agvtool更改app version/build
  • 移动端 h5开发相关内容总结(三)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​低代码平台的核心价值与优势
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ${ }的特别功能
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (MATLAB)第五章-矩阵运算
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (四)JPA - JQPL 实现增删改查
  • (一)Java算法:二分查找
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net Remoting常用部署结构
  • .NET 读取 JSON格式的数据
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET的微型Web框架 Nancy
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [20171101]rman to destination.txt
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略