日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

一文徹底搞明白外觀模式

來源: 責(zé)編: 時間:2024-05-11 09:20:22 252觀看
導(dǎo)讀本篇講解Java設(shè)計模式中的外觀模式,分為定義、模式應(yīng)用前案例、結(jié)構(gòu)、模式應(yīng)用后案例、適用場景、模式可能存在的困惑和本質(zhì)探討7個部分。定義外觀模式是為子系統(tǒng)中的一組接口提供一個一致的界面,外觀模式定義了一個高

本篇講解Java設(shè)計模式中的外觀模式,分為定義、模式應(yīng)用前案例、結(jié)構(gòu)、模式應(yīng)用后案例、適用場景、模式可能存在的困惑和本質(zhì)探討7個部分。1lb28資訊網(wǎng)——每日最新資訊28at.com

定義

外觀模式是為子系統(tǒng)中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。1lb28資訊網(wǎng)——每日最新資訊28at.com

在新的分類方式中,外觀模式被劃分至類之間的交互類別中,其簡化的是一個類與一組類之間的交互耦合問題。1lb28資訊網(wǎng)——每日最新資訊28at.com

1lb28資訊網(wǎng)——每日最新資訊28at.com

模式應(yīng)用前案例

在外觀模式中,列舉一個電商領(lǐng)域的案例。先來看一下未使用外觀模式前的代碼實現(xiàn)。1lb28資訊網(wǎng)——每日最新資訊28at.com

電商領(lǐng)域通常包括庫存子系統(tǒng)、支付子系統(tǒng)和物流子系統(tǒng),代碼如下。1lb28資訊網(wǎng)——每日最新資訊28at.com

public class InventorySystem {//庫存子系統(tǒng)    public void updateInventory(String product, int quantity) {        System.out.println("Updating inventory for " + product + ": " + quantity);    }}public class PaymentSystem {//支付子系統(tǒng)    public void processPayment(double amount) {        System.out.println("Processing payment: $" + amount);    }}public class ShippingSystem {//物流子系統(tǒng)    public void shipOrder(String address) {        System.out.println("Shipping order to address: " + address);    }}

調(diào)用方代碼如下。1lb28資訊網(wǎng)——每日最新資訊28at.com

public class Client {//調(diào)用方代碼    public static void main(String[] args) {        InventorySystem inventory = new InventorySystem();        PaymentSystem payment = new PaymentSystem();        ShippingSystem shipping = new ShippingSystem();        inventory.updateInventory("Computer", 1);        payment.processPayment(1500);        shipping.shipOrder("123 Main Street");    }}

在上述代碼中,不難發(fā)現(xiàn),調(diào)用方與各個子系統(tǒng)直接耦合,這樣主要帶來兩個問題。1lb28資訊網(wǎng)——每日最新資訊28at.com

一個問題是調(diào)用方需要知曉每一個子系統(tǒng)的細節(jié)。在某些情況下,這些子系統(tǒng)之間的關(guān)系也需要知曉。1lb28資訊網(wǎng)——每日最新資訊28at.com

另一個問題是如果子系統(tǒng)代碼發(fā)生變更,調(diào)用方代碼也需要受到關(guān)聯(lián)影響。1lb28資訊網(wǎng)——每日最新資訊28at.com

結(jié)構(gòu)

1lb28資訊網(wǎng)——每日最新資訊28at.com

外觀模式的示例代碼如下。1lb28資訊網(wǎng)——每日最新資訊28at.com

public class SubSystemOne {    public void MethodOne() {        System.out.println("Called SubSystemComponentOne's methodOne()");    }}public class SubSystemTwo {    public void MethodTwo() {        System.out.println("Called SubSystemComponentTwo's MethodTwo()");    }}public class SubSystemThree {    public void MethodThree() {        System.out.println("Called SubSystemComponentThree's methodThree()");    }}public class SubSystemFour {    public void MethodFour() {        System.out.println("Called SubSystemComponentFour's MethodFour()");    }}public class Facade {    private SubSystemOne componentOne;    private SubSystemTwo componentTwo;    private SubSystemThree componentThree;    private SubSystemFour componentFour;    public Facade() {        componentOne = new SubSystemOne();        componentTwo = new SubSystemTwo();        componentThree = new SubSystemThree();        componentFour = new SubSystemFour();    }    public void MethodA() {        componentOne.MethodOne();        componentTwo.MethodTwo();        componentThree.MethodThree();    }    public void MethodB() {        componentTwo.MethodTwo();        componentThree.MethodThree();        componentFour.MethodFour();    }}public class Client {    public static void main(String[] args) {        Facade facade = new Facade();        // 客戶端只需要調(diào)用外觀類提供的接口        facade.MethodA();        facade.MethodB();    }}

模式應(yīng)用后案例

上述電商領(lǐng)域的案例,在應(yīng)用外觀模式之后的代碼實現(xiàn)如下。1lb28資訊網(wǎng)——每日最新資訊28at.com

庫存子系統(tǒng)、支付子系統(tǒng)和物流子系統(tǒng)的代碼不變。1lb28資訊網(wǎng)——每日最新資訊28at.com

public class InventorySystem {//庫存子系統(tǒng)    public void updateInventory(String product, int quantity) {        System.out.println("Updating inventory for " + product + ": " + quantity);    }}public class PaymentSystem {//支付子系統(tǒng)    public void processPayment(double amount) {        System.out.println("Processing payment: $" + amount);    }}public class ShippingSystem {//物流子系統(tǒng)    public void shipOrder(String address) {        System.out.println("Shipping order to address: " + address);    }}

按照外觀模式,增加了一個外觀類。1lb28資訊網(wǎng)——每日最新資訊28at.com

public class OrderFacade {//訂單外觀類    private final InventorySystem inventory;    private final PaymentSystem payment;    private final ShippingSystem shipping;    public OrderFacade() {        this.inventory = new InventorySystem();        this.payment= new PaymentSystem();        this.shipping= new ShippingSystem();    }    //提供一個簡化方法來處理整個訂單流程    public void placeOrder(String product, int quantity,double amount,String address){        this.inventory.updateInventory(product,quantity);        this.payment.processPayment(amount);        this.shipping.shipOrder(address);    }}

最后,調(diào)用方代碼修改如下。1lb28資訊網(wǎng)——每日最新資訊28at.com

public class Client {    public static void main(String[] args) {        //使用外觀模式進行下單操作        OrderFacade facade= new OrderFacade();        facade.placeOrder("Computer", 1, 1500.00,"123 Main Street");    }}

可以看到,代碼的復(fù)雜性已經(jīng)挪到外觀類中實現(xiàn),調(diào)用方代碼變得非常簡潔清晰。1lb28資訊網(wǎng)——每日最新資訊28at.com

適用場景

外觀模式適用于以下場景:1lb28資訊網(wǎng)——每日最新資訊28at.com

1、多個子系統(tǒng)或接口需要通過一定的交互共同為調(diào)用方服務(wù),如果希望子系統(tǒng)后續(xù)可以相對調(diào)用方獨立進行演進,可以考慮外觀模式1lb28資訊網(wǎng)——每日最新資訊28at.com

2、需求實現(xiàn)新功能時,需要依賴企業(yè)中的遺留系統(tǒng)的功能。由于遺留系統(tǒng)通常后續(xù)會安排下線。此時就不建議將遺留系統(tǒng)的接口直接對調(diào)用方暴露,而是在一個外觀類中封裝新增加的功能和遺留系統(tǒng)功能1lb28資訊網(wǎng)——每日最新資訊28at.com

模式可能存在的困惑

困惑1:外觀模式定義中提到的“界面”,具體是什么含義?1lb28資訊網(wǎng)——每日最新資訊28at.com

在外觀模式中,多個子系統(tǒng)屬于一個大的系統(tǒng)。界面可以理解為這個大系統(tǒng)對外暴露的契約接口。調(diào)用方只能通過界面來與系統(tǒng)進行交互。1lb28資訊網(wǎng)——每日最新資訊28at.com

本質(zhì)

對于一個系統(tǒng)來講,對外暴露清晰簡潔的接口是非常有必要的。這不僅可以節(jié)省與調(diào)用方的溝通成本,也可以與調(diào)用方相對解耦,以便后續(xù)獨立進行演進。1lb28資訊網(wǎng)——每日最新資訊28at.com

在系統(tǒng)建設(shè)初期,和調(diào)用方會制定契約接口。但是隨著系統(tǒng)功能越來越多,經(jīng)常會發(fā)現(xiàn)調(diào)用方需要依賴的接口越來越多,此時就可以將相互有關(guān)系的接口,再通過外觀類這一層進行再封裝,始終保持對外的簡潔性。1lb28資訊網(wǎng)——每日最新資訊28at.com

此外,在外觀模式下,外觀類通常并不新增功能,僅僅是封裝已有多個子系統(tǒng)的交互關(guān)系。1lb28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-87982-0.html一文徹底搞明白外觀模式

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 優(yōu)化代碼性能:C#中輕松測量執(zhí)行時間

下一篇: 你真的知道 NPM、Yarn 與 PNPM 之間的區(qū)別嗎?

標(biāo)簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美jizz19性欧美| 亚洲国产精品成人va在线观看| 亚洲欧美中文另类| 日韩视频在线观看免费| 91久久中文| 中日韩视频在线观看| 欧美一级淫片播放口| 久久久久久高潮国产精品视| 蜜臀久久久99精品久久久久久 | 欧美日韩大片| 欧美日韩国产丝袜另类| 国产精品一区二区你懂得| 黑人操亚洲美女惩罚| 亚洲免费福利视频| 午夜久久99| 欧美成黄导航| 国产精品入口福利| 国内精品久久久| 9i看片成人免费高清| 久久av资源网站| 欧美国产精品中文字幕| 国产麻豆精品视频| 亚洲国产专区校园欧美| 亚洲欧美另类国产| 欧美ab在线视频| 国产精品无码永久免费888| 一区在线视频| 亚洲制服av| 欧美黄色免费| 国产亚洲福利| 在线中文字幕一区| 免费亚洲视频| 国产亚洲欧美激情| 99xxxx成人网| 久热这里只精品99re8久| 国产精品视频福利| 亚洲人成绝费网站色www| 欧美一区二区三区在线| 欧美日韩1区2区| 一区二区在线不卡| 亚洲欧美日韩国产精品| 欧美乱在线观看| 在线日韩av片| 性色av香蕉一区二区| 欧美日韩mv| 亚洲高清免费在线| 久久成人国产| 国产精品视频一| 99riav1国产精品视频| 麻豆九一精品爱看视频在线观看免费| 久久嫩草精品久久久精品一| 欧美午夜视频在线观看| 亚洲人成小说网站色在线| 久久久噜噜噜久久久| 国产精品一二三视频| 99re66热这里只有精品4| 免费精品99久久国产综合精品| 免费观看一区| 国产女人水真多18毛片18精品视频| 国产一二精品视频| 亚洲影院色无极综合| 欧美精品一区在线观看| 亚洲福利专区| 玖玖综合伊人| 红杏aⅴ成人免费视频| 欧美一乱一性一交一视频| 国产精品国产三级国产aⅴ入口 | 亚洲欧洲日韩综合二区| 久久黄金**| 国产日韩欧美成人| 欧美精品在线播放| 亚洲高清视频在线| 久久午夜激情| 激情久久久久久久久久久久久久久久| 亚洲人成在线播放| 久久精品国产清自在天天线 | 欧美视频在线观看免费| 亚洲人成在线播放| 裸体一区二区| 在线成人h网| 久久伊人精品天天| 在线免费一区三区| 麻豆成人精品| 亚洲国产一区二区三区高清| 欧美va亚洲va国产综合| 亚洲激情社区| 欧美激情中文不卡| 99国产精品| 欧美色图一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品久久久对白| 一区二区三区高清在线观看| 欧美日韩国产天堂| 99国产精品私拍| 欧美日本三区| 一区二区日韩| 国产精品久久久久久久浪潮网站| 亚洲电影中文字幕| 欧美多人爱爱视频网站| 日韩视频免费| 欧美视频二区| 欧美一区二区三区成人| 国产欧美日韩另类视频免费观看 | 麻豆久久婷婷| 亚洲欧洲三级| 欧美日韩在线播放三区四区| 亚洲午夜免费视频| 国产日韩欧美电影在线观看| 久久久久天天天天| 91久久久久久久久久久久久| 欧美成人蜜桃| 夜夜夜精品看看| 国产精品网站视频| 久久综合色综合88| 亚洲欧洲日韩女同| 国产精品裸体一区二区三区| 国产精品电影观看| 亚洲综合日韩在线| 国产欧美亚洲视频| 麻豆精品精品国产自在97香蕉| 国产一区二区黄| 蜜月aⅴ免费一区二区三区| 日韩午夜高潮| 国产精品资源| 麻豆av一区二区三区| 亚洲精品国产日韩| 国产精品剧情在线亚洲| 久久久91精品国产一区二区精品| 国产日韩视频一区二区三区| 久久夜色撩人精品| 一本色道久久综合一区 | 欧美激情亚洲| 亚洲综合激情| 亚洲大胆美女视频| 国产精品超碰97尤物18| 久久免费观看视频| 在线亚洲成人| 黄色亚洲网站| 国产精品成av人在线视午夜片| 亚洲一区二区成人| 欧美激情精品久久久久久| 一区二区日韩伦理片| 国产亚洲欧美日韩美女| 欧美激情在线有限公司| 性一交一乱一区二区洋洋av| 亚洲人成毛片在线播放| 国产一区二区av| 欧美日韩一区二区三区| 久久亚洲电影| 亚洲欧美日韩网| 亚洲精品国产精品乱码不99按摩| 欧美日韩一区二区视频在线| 久久成人一区| 夜久久久久久| 在线精品亚洲| 国产欧美视频一区二区三区| 欧美日韩p片| 欧美 日韩 国产一区二区在线视频 | 黄色成人av网站| 欧美亚男人的天堂| 免费亚洲电影| 欧美在线91| 这里只有精品视频| 亚洲韩国一区二区三区| 国产亚洲成人一区| 国产精品久久77777| 欧美激情精品久久久久久大尺度 | 91久久线看在观草草青青| 国产欧美精品| 欧美日韩国产黄| 久久―日本道色综合久久| 亚洲欧美日韩精品久久亚洲区| 国产在线麻豆精品观看| 欧美色另类天堂2015| 美女尤物久久精品| 欧美在线国产精品| 亚洲一区二区三区国产| 99在线精品观看| 亚洲日本久久| 亚洲国产精品久久91精品| 激情成人在线视频| 国产亚洲一区二区三区| 国产精品实拍| 国产精品草草| 一区二区三区四区五区精品视频| 国产精品美女午夜av| 欧美精品日韩www.p站| 欧美成人午夜剧场免费观看| 久久经典综合| 欧美亚洲色图校园春色| 亚洲欧美三级在线| 亚洲在线一区二区| 亚洲一二三区视频在线观看| 夜夜嗨一区二区三区| 亚洲乱码国产乱码精品精可以看| 国产精品一区视频| 国产精品久久久久久久久久免费| 久久精品国产99精品国产亚洲性色| 亚洲国产高清在线| 国产专区精品视频| 国产在线欧美| 伊人激情综合| 亚洲国产成人porn| 亚洲激情图片小说视频|