設計模式 門面模式與裝飾模式

2021-10-05 17:18:09 字數 2552 閱讀 7443

目錄

門面模式與裝飾模式

1、門面模式

1.1 什麼是門面模式

1.2 結構圖

1.3 例項演示

1.4 小總結

2、裝飾模式

2.1 什麼是裝飾模式

2.2 結構圖

2.3 例項演示

2.4 小總結

門面模式又叫外觀模式,提供乙個統一的介面,用來訪問子系統中的一群介面。其主要特徵是定義了乙個高層介面,讓子系統更容易使用,屬於結構性模式。

//外觀角色

public class facade

public void show()

}//子系統

public class subsystema

}public class subsystemb

}public class subsystemc

}//客戶端

public class client

}

門面模式相對而言是相對容易理解的。如果善於留意,我們經常有用到。

門面模式的主要優點如下:

外觀模式的主要缺點如下:

適用場景:

門面模式與**模式對比

門面模式與單例模式的關係

裝飾者模式又叫包裝模式,是指在不改變原有物件的基礎之上,將功能附加到物件上,提供了比繼承更有彈性的替代方案,屬於結構性模式。

具體構件和裝飾具體構件的抽象裝飾類通過注入的方式被抽象裝飾類繼續裝飾

因為具體構件和抽象裝飾類都繼承抽象構件,所以被裝飾時可以被同樣的對待,更加靈活。

/**

* @description: 薑餅抽象構建類

* @author: zps

* @create: 2020-05-03 14:46

**/public abstract class battercake

/** * @description: 基類

* @author: zps

* @create: 2020-05-03 15:23

**/public class basebattercake extends battercake

@override

protected int getprice()

}/**

* @description: 加雞蛋

* @author: zps

* @create: 2020-05-03 16:11

**/public class eggdecorator extends battercakedirect

public string getmsg()

public int getprice()

}/**

* @description: 加一塊肉

* @author: zps

* @create: 2020-05-03 16:14

**/public class porkdecrator extends battercakedirect

public string getmsg()

public int getprice()

}/**

* @description:

* @author: zps

* @create: 2020-05-03 15:24

**/public class battercakedirect extends battercake

@override

protected string getmsg()

@override

protected int getprice()

}/**

* @description: 測試

* @author: zps

* @create: 2020-05-03 16:16

**/public class test

}

結果:

裝飾模式的主要優點如下:裝飾模式的主要缺點如下:適用場景:裝飾者模式的應用場景:

設計模式 門面模式

一 門面模式概述 門面模式是物件的結構模式,外部與乙個子系統的通訊必須通過乙個統一的門面物件進行。門面模式提供乙個高層次的介面,使得子系統更易於使用。1 門面角色 facade 這是門面模式的核心。它被客戶角色呼叫,因此它熟悉子系統的功能。它內部根據客戶角色已有的需求預定了幾種功能組合。2 子系統角...

設計模式 門面模式

門面模式 外觀模式 將子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。1 它對客戶遮蔽子系統元件,因而減少了客戶處理的物件的數目並使得子系統使用起來更加方便。2 它實現了子系統與客戶之間的松耦合關係,而子系統內部的功能元件往往是緊耦合的。3 如果...

《設計模式》 門面模式

提供乙個門面去呼叫系統各個子模組,客戶端呼叫門面,減少客戶端與系統中各個子模組的互動,鬆散耦合,facade知道各個子模組,而各個子模組不應該知道facade的存在 客戶端也可以直接呼叫各個子模組,有外觀也可以不使用 當需要呼叫系統內部多個子模組的時候,為了避免客戶端分別呼叫子模組,提供乙個門面,讓...