日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java描述设计模式(12):外观模式

發布時間:2025/3/17 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java描述设计模式(12):外观模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、生活場景

1、場景描述

在移動互聯網沒有普及之前,去飯店吃飯的流程大致如下:選座位,排隊,點菜,結賬。后來移動互聯網普及,通過手機APP就可以操作這些流程,非常的方便快捷:通過手機可以知道某飯店是不是還有空位,到了飯店之后直接入座,然后通過手機點菜,結賬,中間省去了很多繁瑣的流程。

2、代碼圖解

3、代碼實現

/*** 外觀模式描述飯店就餐流程*/ public class C01_InScene {public static void main(String[] args) {EatAppFacade eatAppFacade = new EatAppFacade () ;eatAppFacade.dining();} } // 預定 class Booking {private static Booking booking = new Booking() ;public static Booking getInstance (){return booking ;}public void bookPlace (){System.out.println("位置預定...");} } // 點餐 class TakeOrder {private static TakeOrder takeOrder = new TakeOrder ();public static TakeOrder getInstance (){return takeOrder ;}public void orderDishes (){System.out.println("點餐...");} } // 付款 class Payment {private static Payment payment = new Payment () ;public static Payment getInstance (){return payment ;}public void payMoney (){System.out.println("結賬...");} } // 點餐APP class EatAppFacade {private Booking booking ;private TakeOrder takeOrder ;private Payment payment ;public EatAppFacade (){this.booking = Booking.getInstance() ;this.takeOrder = TakeOrder.getInstance() ;this.payment = Payment.getInstance() ;}// 就餐流程public void dining (){booking.bookPlace();takeOrder.orderDishes();payment.payMoney();} }

二、外觀設計模式

1、基本簡介

外觀模式是對象的結構模式,客戶端與一個子系統的通信必須通過一個統一的外觀對象進行。外觀模式提供一個高層次的接口,使得子系統更易于使用。

2、模式圖解

3、核心角色

  • 外觀角色

客戶端可以調用這個角色的方法。此角色具有相關的子模塊的功能。在正常情況下,本角色會將所有從客戶端發來的請求委派到相應的子系統去。

  • 子模塊角色

可以同時有一個或者多個子模塊。每個子模塊都不是一個單獨的類,而是一個類的集合(如上面的子模塊就是由ModuleA、ModuleB、ModuleC三個類組合而成)。每個子系統都可以被客戶端直接調用,或者被外觀角色調用。子模塊并不知道外觀的存在,對于子模塊而言,外觀角色僅僅是另外一個客戶端。

  • 客戶端角色

外觀對象功能的調用者。

4、源代碼實現

public class C02_Facade {public static void main(String[] args) {Facade facade = new Facade();facade.clientNeed1();facade.clientNeed2();} } class ModuleA {public void testA (){System.out.println("ModuleA.testA()");} } class ModuleB {public void testB (){System.out.println("ModuleB.testB()");} } class ModuleC {public void testC (){System.out.println("ModuleC.testC()");} } class Facade {/*** 客戶需求1*/public void clientNeed1 (){ModuleA moduleA = new ModuleA();moduleA.testA();ModuleB moduleB = new ModuleB();moduleB.testB();}/*** 客戶需求1*/public void clientNeed2 (){ModuleB moduleB = new ModuleB();moduleB.testB();ModuleC moduleC = new ModuleC();moduleC.testC();} }

三、Mybatis應用場景

1、使用場景

  • org.apache.ibatis.session.Configuration
  • org.apache.ibatis.reflection.MetaObject

Configuration 創建 MetaObject 的時候。

2、Configuration源碼

public class Configuration {protected ObjectFactory objectFactory;protected ObjectWrapperFactory objectWrapperFactory;public Configuration() {this.objectFactory = new DefaultObjectFactory();this.objectWrapperFactory = new DefaultObjectWrapperFactory();}public MetaObject newMetaObject(Object object) {return MetaObject.forObject(object, this.objectFactory, this.objectWrapperFactory);}// ... 省去其他源碼 }

3、MetaObject 源碼

public static MetaObject forObject(Object object, ObjectFactory objectFactory, ObjectWrapperFactory objectWrapperFactory) {return object == null ? SystemMetaObject.NULL_META_OBJECT : new MetaObject(object, objectFactory, objectWrapperFactory); }

四、優缺點總結

松散了客戶端與子模塊的耦合關系,使子模塊功能的調用更加簡單。通過合理使用Facade,可以更好地劃分訪問的層次。有些方法是對系統外的,有些方法是系統內部使用的,把需要暴露給外部的功能集中到門面中。如果過多的使用外觀模式,會讓子模塊功能的維護變的復雜,一個功能方法改變,會牽扯到多個外觀對象的改變。

五、源代碼地址

GitHub·地址 https://github.com/cicadasmile/model-arithmetic-parent GitEE·地址 https://gitee.com/cicadasmile/model-arithmetic-parent

總結

以上是生活随笔為你收集整理的Java描述设计模式(12):外观模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 婷婷丁香一区二区三区 | 欧美日韩黄色 | 让男按摩师摸好爽 | 黄色一级在线视频 | 一区二区三区少妇 | 日韩av大片 | 日本在线观看一区二区三区 | 日韩大片在线观看 | 我要看免费的毛片 | 日本欧美在线 | 久久这里只有精品国产 | 一区视频免费观看 | 2018中文字幕在线观看 | 亚洲热在线观看 | 风韵丰满熟妇啪啪区老熟熟女 | 男人添女人荫蒂国产 | 精品一区二区三区久久 | 亚洲夜夜夜 | 日本不卡网站 | 男人的天堂一级片 | 黄网站免费在线观看 | 国产夫妻一区 | 久久久精品一区二区涩爱 | 亚洲手机视频 | 99999av| 中国一级特黄视频 | 黄网站色视频免费观看 | 日韩精品中文在线 | 日本a免费 | 午夜免费福利 | 精品久久久久久久久久久久久久 | 一级黄色片毛片 | 欧美日韩免费在线视频 | 成人欧美一区 | 日韩精品一区二 | 蜜臀人妻四季av一区二区不卡 | 久久天天躁狠狠躁夜夜躁 | 久久精品97 | 精品综合久久久久 | 性开放的欧美大片 | 欧美一区二区三区免费观看 | 青青草原亚洲 | xxxx 国产 | 成人做爰66片免费看网站 | 91精品国产麻豆 | 久久精品国产精品 | 国产美女精品久久 | 人人操在线播放 | 黄色污污网站在线观看 | 久久免费少妇高潮99精品 | 日韩美女网站 | 91国语对白 | 人人草在线观看 | 成人午夜淫片100集 伊人久久国产 | 99在线国产| 欧美精品123区 | 91午夜免费视频 | 欧美xxxxx高潮喷水麻豆 | 久久精品日韩无码 | 无码久久av一区二区三区 | 久久蜜桃视频 | 国产成人无码www免费视频播放 | 官场艳妇疯狂性关系 | 国产一级免费片 | 亚洲精品中文字幕在线播放 | 24小时日本在线www免费的 | 国产中文字幕在线免费观看 | 热精品 | 国产一级免费片 | 韩国三级做爰高潮 | 国产裸体美女永久免费无遮挡 | 好男人在线视频www 亚洲福利国产 | 秋霞国产午夜精品免费视频 | 少妇人妻真实偷人精品视频 | 国内精品视频一区二区三区 | 国产精品国语自产拍在线观看 | 人妻少妇偷人精品无码 | 精品国产丝袜一区二区三区乱码 | 日韩女优在线播放 | 夜间福利视频 | 欧美国产一区二区三区 | wwwxxx黄色片 | 美女免费网站 | 五月天婷婷激情视频 | 亚洲第一二三区 | 中文字幕在线免费看线人 | 中文字幕乱妇无码av在线 | 四虎视频在线 | 黄色视屏软件 | www.操com| 黄色片网站在线免费观看 | 免费伊人网 | 国产资源在线视频 | 久久男女 | 波多野吉衣一区二区三区 | 老司机在线观看视频 | 伊人网视频在线观看 | 婷婷国产精品 | 91插插插永久免费 |