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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

css外墙法_外墙设计模式示例

發布時間:2023/12/3 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 css外墙法_外墙设计模式示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

css外墻法

本文是我們名為“ Java設計模式 ”的學院課程的一部分。

在本課程中,您將深入研究大量的設計模式,并了解如何在Java中實現和利用它們。 您將了解模式如此重要的原因,并了解何時以及如何應用模式中的每一個。 在這里查看 !

目錄

1.簡介 2.什么是立面模式 3.解決問題 4.使用外觀模式 5.下載源代碼

1.簡介

在本課程中,我們將討論另一種結構模式,即立面模式。 但是在深入研究它的細節之前,讓我們討論一個將通過此特定模式解決的問題。

您的公司是一家基于產品的公司,并且已在市場上推出了名為Schedule Server的產品。 它本身是一種服務器,用于管理作業。 這些工作可以是任何類型的工作,例如發送電子郵件列表,短信,從目標位置讀取或寫入文件,或者只是將文件從源位置傳輸到目標位置。 開發人員可以使用該產品來管理此類工作,并能夠將更多精力集中于他們的業務目標。 服務器在指定的時間執行每個作業,并且還單獨管理所有下劃線問題,例如并發問題和安全性。 作為開發人員,只需要編碼相關的業務需求,并提供了大量的API調用即可根據他們的需求安排工作。

一切都進行得很好,直到客戶端開始抱怨啟動和停止服務器進程。 他們說,盡管服務器運行良好,但是初始化和關閉過程卻非常復雜,他們希望有一種簡便的方法來做到這一點。 服務器向客戶端公開了一個復雜的接口,這些接口看上去對他們來說有些忙。

我們需要提供一種啟動和停止服務器的簡便方法。

與客戶端的復雜接口已經被認為是當前系統設計中的故障。 但是幸運的是,我們無法從頭開始設計和編碼。 我們需要一種解決此問題并使界面易于訪問的方法。

外觀模式可以幫助我們解決此設計問題。 但是在此之前,讓我們了解一下外觀模式。

2.什么是立面模式

Facade模式使用Facade類使復雜的界面易于使用。 外觀模式為子系統中的一組接口提供了統一的接口。 Facade定義了一個更高級別的界面,使子系統更易于使用。

Facade統一了子系統的復雜底層接口,以便提供一種訪問該接口的簡單方法。 它只是為子系統的復雜接口提供了一層,使其更易于使用。

Facade不封裝子系統類或接口; 它只是為其功能提供了簡化的界面。 客戶端可以直接訪問這些類。 它仍然為可能需要它的客戶提供系統的全部功能。

Facade不僅能夠簡化界面,而且還可以使客戶端與子系統分離。 它遵循最小知識原則,該原則避免了客戶端與子系統之間的緊密耦合。 這提供了靈活性:假設在上述問題中,公司希望添加更多具有相同接口的步驟來啟動或停止Schedule Server。 如果您將客戶端代碼編碼到Facade而不是子系統上,則無需更改客戶端代碼,只需更改Facade,它將隨新版本一起提供給客戶端。

客戶端通過向Facade發送請求來與子系統進行通信,該請求會將其轉發到適當的子系統對象。 盡管子系統對象執行實際工作,但是外觀可能必須完成其自身的工作才能將其接口轉換為子系統接口。 使用外觀的客戶端不必直接訪問其子系統對象。

請注意, 與適配器相同的Facade可以包裝多個類,但是將Facade用于接口可簡化復雜接口的使用,而適配器可用于將接口轉換為客戶端期望的接口。

圖1

3.解決問題

客戶端在使用Schedule Server時面臨的問題是服務器啟動和停止其服務所帶來的復雜性。 客戶想要一種簡單的方法。 以下是客戶端啟動和停止服務器所需編寫的代碼。

ScheduleServer scheduleServer = new ScheduleServer();

要啟動服務器,客戶端需要創建ScheduleServer類的對象,然后需要按順序調用以下方法來啟動和初始化服務器。

scheduleServer.startBooting(); scheduleServer.readSystemConfigFile(); scheduleServer.init(); scheduleServer.initializeContext(); scheduleServer.initializeListeners(); scheduleServer.createSystemObjects();System.out.println("Start working......"); System.out.println("After work done.........");

要停止服務器,客戶端需要以相同的順序調用以下方法。

scheduleServer.releaseProcesses(); scheduleServer.destory(); scheduleServer.destroySystemObjects(); scheduleServer.destoryListeners(); scheduleServer.destoryContext(); scheduleServer.shutdown();

這對他們來說似乎是一個負擔,他們對做所有這些事情都不感興趣,為什么要這么做? 即使對于一些可能對系統的低級界面感興趣的客戶來說,這看起來很有趣,但他們中的大多數人都不喜歡它。

為了解決這個問題,我們將創建一個將包裝服務器對象的Facade類。 此類將為客戶端提供簡單的接口(方法)。 這些接口在內部將調用服務器對象上的方法。 首先讓我們看一下代碼,然后再討論它。

package com.javacodegeeks.patterns.facadepattern;public class ScheduleServerFacade {private final ScheduleServer scheduleServer;public ScheduleServerFacade(ScheduleServer scheduleServer){this.scheduleServer = scheduleServer;}public void startServer(){scheduleServer.startBooting();scheduleServer.readSystemConfigFile();scheduleServer.init();scheduleServer.initializeContext();scheduleServer.initializeListeners();scheduleServer.createSystemObjects();}public void stopServer(){scheduleServer.releaseProcesses();scheduleServer.destory();scheduleServer.destroySystemObjects();scheduleServer.destoryListeners();scheduleServer.destoryContext();scheduleServer.shutdown();}}

上面的ScheduleServerFacade類是Facade類,它包裝ScheduleServer對象,它通過其構造函數實例化服務器對象,并具有兩個簡單方法: startServer()和stopServer() 。 這些方法在內部執行服務器的啟動和停止。 客戶端只需要調用這些簡單的方法即可。 現在,無需調用所有生命周期和銷毀方法,只需簡單的方法和其余過程將由facade類執行。

下面的代碼顯示了Facade如何使復雜的界面易于使用。

package com.javacodegeeks.patterns.facadepattern;public class TestFacade {public static void main(String[] args) {ScheduleServer scheduleServer = new ScheduleServer();ScheduleServerFacade facadeServer = new ScheduleServerFacade(scheduleServer);facadeServer.startServer();System.out.println("Start working......");System.out.println("After work done.........");facadeServer.stopServer();}}

另外,請注意,盡管Facade類為復雜的子系統提供了一個簡單的接口,但它沒有封裝子系統。 客戶端仍然可以訪問子系統的低級接口。 因此,外觀提供了一個額外的層,即到復雜子系統的簡單接口,但是它并未完全隱藏對復雜子系統的低層接口的直接訪問。

4.使用外觀模式

在以下情況下使用外觀模式:

  • 您想為復雜的子系統提供一個簡單的接口。 隨著子系統的發展,它們通常會變得更加復雜。 多數模式在應用時會導致更多和更少的類。 這使得子系統更加可重用并且更易于自定義,但是對于不需要自定義子系統的客戶端來說,也變得更加難以使用。 外觀可以提供子系統的簡單默認視圖,足以滿足大多數客戶端的需求。 只有需要更多可定制性的客戶才需要超越外觀。
  • 客戶端與抽象的實現類之間存在許多依賴關系。 引入外觀以使子系統與客戶端和其他子系統分離,從而提高子系統的獨立性和可移植性。
  • 您可以對子系統進行分層。 使用外觀來定義每個子系統級別的入口點。 如果子系統是依賴的,則可以通過使子系統僅通過其外觀相互通信來簡化它們之間的依賴關系。
  • 5.下載源代碼

    這是有關立面模式的課程。 您可以在此處下載源代碼: FacadePattern-Project

    翻譯自: https://www.javacodegeeks.com/2015/09/facade-design-pattern.html

    css外墻法

    總結

    以上是生活随笔為你收集整理的css外墙法_外墙设计模式示例的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 一区二区在线免费观看 | 国产手机在线播放 | 国产第一区第二区 | 欧美wwwxxxx | 天天弄| 久草网在线视频 | 伊人久色 | 麻豆 美女 丝袜 人妻 中文 | 九色福利 | 国产精品久久久久久久免费看 | 欧美另类一区二区 | 亚洲午夜久久久久久久久久久 | 激情黄色小视频 | 大香伊人 | 男女午夜激情 | 成人特级毛片69免费观看 | 乱色欧美| 欧美美女性生活视频 | 男人操女人逼逼视频 | 欧美a∨亚洲欧美亚洲 | 网址你懂的在线 | 中文字幕永久在线视频 | 少妇在军营h文高辣 | 天堂av2019 | 91av精品 | 亚洲精品码 | 成人高潮片免费网站 | 亚洲国产精品成人午夜在线观看 | 在线伊人 | 一本高清dvd在线播放 | 日本一区二区三区成人 | 国产色在线观看 | 精品欧美一区二区三区成人 | 国产免费成人在线视频 | 精品人妻一区二区三区换脸明星 | 桃色一区二区 | 欧美xxxⅹ性欧美大片 | av香港经典三级级 在线 | 成人国产精品蜜柚视频 | 精品人伦一区二区三区 | 久久看视频 | 婷婷色五 | 青青草老司机 | 国产精品正在播放 | 夜夜操导航 | 国产精品无码av无码 | 国产成人精品二区三区亚瑟 | 最新国产黄色网址 | 国内精品偷拍 | 校园春色亚洲色图 | 欧美另类极品videosbest使用方法 | 天天射天天干天天操 | 成人免费毛片男人用品 | 日日夜夜中文字幕 | 久视频在线 | 丝袜性爱视频 | 捆绑中国女人hd视频 | 黑料视频在线 | 日韩精品在线观看网站 | 日本欧美久久久久免费播放网 | 国产伦精品一区二区免费 | 99热国产| 成人动漫在线播放 | 国产精久久一区二区三区 | 九九热视频在线观看 | 国产精品人人爽人人爽 | xxxx.国产 | 成人资源在线 | 激情999| 已满18岁免费观看电视连续剧 | 午夜久久视频 | 午夜看片福利 | 亚洲va在线∨a天堂va欧美va | 中文字幕视频在线播放 | 激情导航 | 九九久久99 | 97香蕉久久夜色精品国产 | 四虎毛片| 一级大片在线观看 | 成人mv | 国产人妖在线播放 | 欧美一区亚洲 | 黄色激情网址 | 日日射夜夜操 | 亚洲成av人片一区二区梦乃 | 美女扒开内看个够网站 | 长篇高h乱肉辣文 | 国产一区二区视频在线免费观看 | 在线观看免费中文字幕 | 亚洲第一av网 | 中文字幕精品视频 | 免费看裸体网站视频 | 精品国产AV色欲天媒传媒 | 国产欧美日韩成人 | 四川黄色一级片 | 欧美日韩电影一区二区三区 | 97自拍视频 | 日本黄页网站 | 日本人极品人妖高潮 |