博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试必问的设计模式 | 外观模式
阅读量:4105 次
发布时间:2019-05-25

本文共 1236 字,大约阅读时间需要 4 分钟。

一、简介

外观模式 (Facade Pattern) 也称作 门面模式包装模式,是一种 结构型 模式,其特点是把复杂流程通过接口封装起来,使用起来更加简单,降低系统复杂度。

二、实例

比如我们一个购物操作,需要下单,减库存,支付,记录日志,等等一系列复杂的操作还有判断,如果我们都写在一个方法里面,这样,一个方法几十上百行代码,会造成代码难以阅读维护,类似于这样

在这里插入图片描述

所以,我们可以通过外观模式,优化成这样
在这里插入图片描述
下面用代码虚拟地模拟这个流程,这里只是模拟,实际场景更加复杂

public class OrderService {
public void order(){
System.out.println("下单"); }}
public class StockService {
public void deleteStoek() {
System.out.println("减库存"); }}
public class PayService {
public void pay() {
System.out.println("支付"); }}

如果我们不进行封账,那么在具体调用这些方法实现购物,想想就知道代码有多么复杂,下面我们进行一下封装

购物类,分装了以上流程

public class ShoppingService {
private OrderService orderService = new OrderService(); private StockService stockService= new StockService(); private PayService payService =new PayService(); public void shop(){
orderService.order(); stockService.deleteStoek(); payService.pay(); }}

当我们需要实现以上流程时,即可一步到位

public class Main {
public static void main(String[] args){
ShoppingService shoppingService = new ShoppingService(); shoppingService.shop(); }}

三、总结

优点

简单,把复杂业务流程通过接口封装起来,使用起来更加简单

解耦,让模块功能更易于维护和扩展,降低系统复杂度

缺点

业务类增多,但是利大于弊

—— 完

ABOUT

公众号:【星尘Pro】

github:

推荐阅读

转载地址:http://oyfsi.baihongyu.com/

你可能感兴趣的文章
C#串口传输中文字符
查看>>
ethereum Pet Shop
查看>>
UVA11090 Going in Cycle!!
查看>>
网站推广--Html关键词代码解说
查看>>
MySQL管理员指南之--MySQL用户管理
查看>>
怎样卸载外壳扩展的DLL?
查看>>
具有自动恢复功能的通知栏图标控件
查看>>
Win7编程:在按钮中加入管理员权限运行
查看>>
推荐系统的挑战(转载)
查看>>
Production Module - BOM and Routing
查看>>
Goods issue and Costing
查看>>
各种排序算法思想复杂度及其java程序实现
查看>>
八 原型prototype和__proto__
查看>>
[Luogu 3958] NOIP2017 D2T1 奶酪
查看>>
脱水缩合
查看>>
白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)
查看>>
Office 2010 中的数字签名
查看>>
软件工程概论课堂作业二维数组
查看>>
Linux内核分析8
查看>>
hdu 1238 字符串匹配
查看>>