国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式之代理模式與外觀模式

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式之代理模式與外觀模式。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

代理模式

簡介

優(yōu)缺點(diǎn)

角色職責(zé)

實(shí)現(xiàn)

運(yùn)用場景

外觀模式

簡介

角色職責(zé)

優(yōu)缺點(diǎn)

實(shí)現(xiàn)

使用場景


代理模式

簡介

由于某些原因需要給某對象提供一個(gè)代理以控制對該對象的訪問。這時(shí),訪問對象不適合或者不能直接引用目標(biāo)對象,代理對象作為訪問對象和目標(biāo)對象之間的中介

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

??????? 1.在客戶端與目標(biāo)對象之間起到一個(gè)中介作用和保護(hù)目標(biāo)對象的作用

??????? 2.可以擴(kuò)展目標(biāo)對象的功能

??????? 3.將客戶端與目標(biāo)對象分離,在一定程度上降低了系統(tǒng)的耦合度,增加了程序的可擴(kuò)展性

缺點(diǎn):

??????? 1.會(huì)造成系統(tǒng)設(shè)計(jì)中類的數(shù)量增加

??????? 2.在客戶端和目標(biāo)對象之間增加一個(gè)代理對象,會(huì)造成請求處理速度變慢

??????? 3.增加了系統(tǒng)的復(fù)雜度

角色職責(zé)

抽象主題(Subject)類:通過接口或抽象類聲明真實(shí)主題和代理對象實(shí)現(xiàn)的業(yè)務(wù)方法。
真實(shí)主題(Real Subject)類:實(shí)現(xiàn)了抽象主題中的具體業(yè)務(wù),是代理對象所代表的真實(shí)對象,是最終要引用的對象。
代理(Proxy)類:提供了與真實(shí)主題相同的接口,其內(nèi)部含有對真實(shí)主題的引用,它可以訪問、控制或擴(kuò)展真實(shí)主題的功能

設(shè)計(jì)模式之代理模式與外觀模式,設(shè)計(jì)模式,設(shè)計(jì)模式,代理模式,外觀模式

實(shí)現(xiàn)

package proxy;
public class ProxyTest {
    public static void main(String[] args) {
        Proxy proxy = new Proxy();
        proxy.Request();
    }
}
//抽象主題
interface Subject {
    void Request();
}
//真實(shí)主題
class RealSubject implements Subject {
    public void Request() {
        System.out.println("訪問真實(shí)主題方法...");
    }
}
//代理
class Proxy implements Subject {
    private RealSubject realSubject;
    public void Request() {
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        preRequest();
        realSubject.Request();
        postRequest();
    }
    public void preRequest() {
        System.out.println("訪問真實(shí)主題之前的預(yù)處理。");
    }
    public void postRequest() {
        System.out.println("訪問真實(shí)主題之后的后續(xù)處理。");
    }
}

?

運(yùn)用場景

1.AOP:通過定義切面、切入點(diǎn)和通知等,Spring AOP在運(yùn)行時(shí)生成代理對象,將切面邏輯織入到目標(biāo)對象的方法調(diào)用中。代理對象在方法調(diào)用前后執(zhí)行附加操作,如日志記錄、性能監(jiān)控等。
2.動(dòng)態(tài)代理(JDK動(dòng)態(tài)代理、CGLIB代理):當(dāng)Bean類實(shí)現(xiàn)了接口時(shí),Spring使用JDK動(dòng)態(tài)代理來為Bean生成代理對象;當(dāng)Bean類沒有實(shí)現(xiàn)接口時(shí),Spring使用CGLIB代理來生成代理對象。
?

外觀模式

簡介

????????提供了統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口。外觀模式定義了一個(gè)高層接口,讓子系統(tǒng)更加容易使用。

設(shè)計(jì)模式之代理模式與外觀模式,設(shè)計(jì)模式,設(shè)計(jì)模式,代理模式,外觀模式

角色職責(zé)

????????外觀角色:提供一個(gè)外觀接口,對外提供一個(gè)易于客戶端訪問的接口,對內(nèi)可以訪問子系統(tǒng)中的所有功能。

????????子系統(tǒng)角色:子系統(tǒng)在整個(gè)系統(tǒng)中可以是一個(gè)或者多個(gè)模塊,每個(gè)模塊都是若干類組成,這些類之間可能相互復(fù)雜的關(guān)系。

????????客戶端:外觀接口調(diào)用測試者。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

??????? 1.減少系統(tǒng)相互依賴

??????? 2.提高靈活性

??????? 3.提高了安全性

缺點(diǎn):

??????? 在不對外觀類進(jìn)行抽象的時(shí)候,如果需要添加新的子系統(tǒng),就需要對外觀類進(jìn)行修改,違背了開閉原則

實(shí)現(xiàn)

public class CPU {
	
	public void startup(){
		System.out.println("cpu startup!");
	}
	
	public void shutdown(){
		System.out.println("cpu shutdown!");
	}
}

public class Memory {
	
	public void startup(){
		System.out.println("memory startup!");
	}
	
	public void shutdown(){
		System.out.println("memory shutdown!");
	}
}

public class Disk {
	
	public void startup(){
		System.out.println("disk startup!");
	}
	
	public void shutdown(){
		System.out.println("disk shutdown!");
	}
}

public class Computer {
	private CPU cpu;
	private Memory memory;
	private Disk disk;
	
	public Computer(){
		cpu = new CPU();
		memory = new Memory();
		disk = new Disk();
	}
	
	public void startup(){
		System.out.println("start the computer!");
		cpu.startup();
		memory.startup();
		disk.startup();
		System.out.println("start computer finished!");
	}
	
	public void shutdown(){
		System.out.println("begin to close the computer!");
		cpu.shutdown();
		memory.shutdown();
		disk.shutdown();
		System.out.println("computer closed!");
	}
}

//測試
public class User {
 
	public static void main(String[] args) {
		Computer computer = new Computer();
		computer.startup();
		computer.shutdown();
	}
}

????????如果沒有Computer類,那么,CPU、Memory、Disk他們之間將會(huì)相互持有實(shí)例,產(chǎn)生關(guān)系,這樣會(huì)造成嚴(yán)重的依賴,修改一個(gè)類,可能會(huì)帶來其他類的修改,這不是我們想要看到的,有了Computer類,他們之間的關(guān)系被放在了Computer類里,這樣就起到了解耦的作用,這,就是外觀模式!

使用場景

??????? 1.對分層結(jié)構(gòu)系統(tǒng)構(gòu)建時(shí),使用外觀模式定義子系統(tǒng)中每層的入口點(diǎn)可以簡化子系統(tǒng)之間的依賴關(guān)系

??????? 2.當(dāng)一個(gè)復(fù)雜系統(tǒng)的子系統(tǒng)很多時(shí),外觀模式可以為系統(tǒng)設(shè)計(jì)一個(gè)簡單的接口供外界訪問

??????? 3.當(dāng)客戶端與多個(gè)子系統(tǒng)之間存在很大的聯(lián)系時(shí),引入外觀模式可將它們分離,從而提高子系統(tǒng)的獨(dú)立性和可移植性文章來源地址http://www.zghlxwxcb.cn/news/detail-694636.html

到了這里,關(guān)于設(shè)計(jì)模式之代理模式與外觀模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式之外觀模式

    設(shè)計(jì)模式之外觀模式

    組建一個(gè)家庭影院: DVD 播放器、投影儀、自動(dòng)屏幕、環(huán)繞立體聲、爆米花機(jī),要求完成使用家庭影院的功能,其過程為:直接用遙控器: 統(tǒng)籌各設(shè)備開關(guān) 開爆米花機(jī) 放下屏幕 開投影儀 開音響 開 DVD,選 dvd 去拿爆米花 調(diào)暗燈光 播放 觀影結(jié)束后,關(guān)閉各種設(shè)備 在 ClientTest

    2024年02月09日
    瀏覽(30)
  • 設(shè)計(jì)模式-外觀模式

    ? ? ?外觀模式(Facade Pattern)是屬于結(jié)構(gòu)型的設(shè)計(jì)模式,它的主要目的是為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一且更簡單的接口,還簡化了客戶端調(diào)用子系統(tǒng)功能的過程。 1 Facade(外觀類) : Facade 類提供了對子系統(tǒng)的簡潔、一致的接口。它包含了子系統(tǒng)中的多個(gè)模塊或組件的

    2024年01月19日
    瀏覽(39)
  • 設(shè)計(jì)模式詳解-外觀模式

    類型:結(jié)構(gòu)型模式 實(shí)現(xiàn)原理:定義了一個(gè)高層接口,向現(xiàn)有的系統(tǒng)中的一組接口提供一致的界面 目的:降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡化客戶端之間的接口,使系統(tǒng)更加容易使用 何時(shí)使用:簡化復(fù)雜系統(tǒng),方便操作 解決方法:對客戶端和系統(tǒng)解耦,讓外觀類

    2024年02月12日
    瀏覽(22)
  • 設(shè)計(jì)模式:外觀模式

    外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它提供了一個(gè)統(tǒng)一的接口,用于訪問子系統(tǒng)中的一組接口。外觀模式隱藏了子系統(tǒng)的復(fù)雜性,使得客戶端能夠更簡單地使用子系統(tǒng)的功能。 外觀模式的核心思想是將復(fù)雜的子系統(tǒng)封裝在一個(gè)外觀類中,客戶端只需要與外觀類進(jìn)行交互,而不需

    2024年02月07日
    瀏覽(31)
  • 設(shè)計(jì)模式(8)外觀模式

    設(shè)計(jì)模式(8)外觀模式

    一、 1、使用背景:降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡化客戶端之間的接口。 2、定義: 為子系統(tǒng)中的一組接口定義一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。完美地體現(xiàn)了依賴倒轉(zhuǎn)原則和迪米特法則的思想。 3、結(jié)構(gòu)

    2024年02月11日
    瀏覽(23)
  • 設(shè)計(jì)模式之~外觀模式

    設(shè)計(jì)模式之~外觀模式

    定義: ????????為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 結(jié)構(gòu)圖: 區(qū)分中介模式: 門面模式對外提供一個(gè)接口 中介模式對內(nèi)提供一個(gè)接口 優(yōu)點(diǎn): 松耦合:用戶與子系統(tǒng)解耦,屏蔽子系統(tǒng);可以

    2024年02月07日
    瀏覽(36)
  • js設(shè)計(jì)模式:外觀模式

    js設(shè)計(jì)模式:外觀模式

    將復(fù)雜的功能封裝成可以簡單調(diào)用的方法,無需知道內(nèi)部的具體邏輯,只需要知道怎么去使用 類似于一把槍,你可以不知道內(nèi)部的槍機(jī),擊發(fā)機(jī),復(fù)進(jìn)簧,槍管,導(dǎo)氣裝置,彈夾是怎么合作配合完成發(fā)射和自動(dòng)填彈,你只需要知道你扣動(dòng)扳機(jī)就能完成這一系列復(fù)雜的操作,而那個(gè)扳機(jī)就是

    2024年02月22日
    瀏覽(20)
  • 設(shè)計(jì)模式之外觀模式筆記

    設(shè)計(jì)模式之外觀模式筆記

    記錄下學(xué)習(xí)設(shè)計(jì)模式-外觀模式的寫法。JDK使用版本為1.8版本。 意圖 :為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 結(jié)構(gòu) : 其中: Facade知道哪些子系統(tǒng)類負(fù)責(zé)處理請求;將客戶的請求代理給適合的子系統(tǒng)

    2024年02月11日
    瀏覽(30)
  • Java設(shè)計(jì)模式-外觀模式

    在軟件開發(fā)過程中,經(jīng)常會(huì)遇到復(fù)雜的系統(tǒng)和龐大的類庫。這些系統(tǒng)往往包含了大量的類和子系統(tǒng),給開發(fā)人員帶來了挑戰(zhàn)。為了簡化接口設(shè)計(jì)和提高系統(tǒng)的可用性,設(shè)計(jì)模式提供了一種名為外觀模式的解決方案。 外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,旨在為復(fù)雜系統(tǒng)提供一個(gè)簡

    2024年02月05日
    瀏覽(25)
  • 設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    目錄 什么是外觀模式 外觀模式的實(shí)現(xiàn) 外觀模式角色 外觀模式舉例 外觀模式類圖 外觀模式代碼實(shí)現(xiàn) 外觀模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 注意事項(xiàng) 應(yīng)用場景 總結(jié) ????????外觀模式(Facade Pattern):又叫作門面模式,歸屬于結(jié)構(gòu)型模式。外觀模式定義了提供了定義了一個(gè)統(tǒng)一的高層

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包