日韩性视频-久久久蜜桃-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):外观模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产日本欧美一区二区 | 国产激情第一页 | 又黄又色的网站 | 91久久婷婷| 韩国美女被c | 午夜xxxxx| 亚洲涩涩网站 | 亚洲小说区图片区 | 国产视频第一区 | 三浦理惠子av在线播放 | 亚洲欧美中文日韩在线观看 | 误杀1电影免费观看高清完整版 | 熟女俱乐部五十路六十路av | 亚洲国产欧美在线人成 | 黄色成人在线视频 | 天天干网 | 亚洲色图校园春色 | 麻豆黄色片 | 中国性xxx | 九九久久久 | 久草美女 | 温柔少妇的高潮呻吟 | 狠色综合 | 一区二区国产在线 | 69人人| 国产尤物视频在线 | 国产片黄色 | 熟女俱乐部一区二区视频在线 | 国产精品国语自产拍在线观看 | 中文字幕1区2区3区 www.com黄色片 | 久久男人天堂 | 国产精品成人免费精品自在线观看 | 经典三级久久 | 午夜精品毛片 | 国产乡下妇女做爰视频 | 欧美激情自拍 | 国产精品电影院 | av小次郎收藏 | 美女一二三区 | 日韩欧美一区二区三区视频 | 亚洲精品成av人片天堂无码 | 午夜在线看 | 动漫av在线播放 | 91在线短视频 | 亚洲国产精品久久AV | 国产欧美精品一区 | 久久精视频| 久久综合九色综合网站 | 亚洲欧美另类国产 | www.av777 | 亚洲成人一 | 人人妻人人做人人爽 | 久久久久人妻一区二区三区 | 成人午夜免费在线观看 | 久久在线免费观看 | 天天干狠狠操 | 中文字幕码精品视频网站 | 国产视频一区二区三 | 最新中文字幕在线观看视频 | 全程偷拍露脸中年夫妇 | www.555国产精品免费 | 国产午夜无码精品免费看奶水 | 亚洲AV无码片久久精品 | 欧美色精品在线 | 成人黄色在线网站 | 天堂色av | 亚洲一线av | 最好看的2019年中文在线观看 | 中文字幕一级片 | 成人做爰视频www | 国产精品27p | 美女隐私免费 | 一区二区三区精品免费视频 | 日本视频免费在线 | 国产在线毛片 | 国精品一区 | 成人影音在线 | a一级网站 | 驯服少爷漫画免费观看下拉式漫画 | 久草福利资源 | 黄色网免费| 肉丝美脚视频一区二区 | 日本老肥婆bbbwbbbwzr | 欧美成人h版 | 久草视频在线免费 | 欧美乱做爰xxxⅹ久久久 | 久久99国产综合精品免费 | 午夜性剧场| 乱图区 | 日韩在线视频观看免费 | 国产精品一区久久久 | 鲁鲁在线 | xxx久久 | 国产欧美一区二区 | 伊人av一区 | 网站在线播放 | 亚洲黄色片在线观看 | 欧美老熟妇一区二区三区 | 白丝美女被草 |