設計模式之 facade與flyweight

2021-08-25 07:23:22 字數 561 閱讀 4183

facade是外觀的意思,啥意思呢?這個模式主要是針對子系統的複雜類的情況下,通過它可以提供乙個簡單的功能類。比如目前做的dlna庫,寫了好幾個介面,而且基本上只有我知道是怎麼個用法。但是dlna的客戶端真得需要了解這麼複雜的東西嗎?不用,所以後面單獨弄了乙個dlna類,介面非常簡單。這個就是facade的目的,把子系統的功能積聚到乙個簡單的類中去。注意,facade和之前的adapter等目的明顯不同,這個是為了遮蔽子系統的複雜性而做的。

flyweight,是輕量級的意思,感覺這個模式的名字沒取好啊,其實就是物件共享的設計模式,啥意思?有些重複物件就別老new了,把他們放到乙個pool中,想要的時候去取就好了。flyweight相對於記憶體使用而言的輕重。這個模式其實設計起來比較難。主要有以下幾個點:

1 一般而言,共享物件某個屬性改了的話,會影響到其他使用者,那麼,哪些屬性定義為共享物件之內(intrinsic),哪些屬性定義為共享物件之外呢(extrinsic)?

flyweight類層次也比較多,需要存在flyweight的介面,畢竟共享物件難道一直就只有一類?還要有flyweight的工廠類,這個用於控制共享物件的引用計數的,也必須要的吧?

設計模式之Facade

facade模式的定義 為子系統中的一組介面提供乙個一致的介面.facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare connection conn null preparedstatement prep null resultset ...

設計模式之Facade

facade模式的定義 為子系統中的一組介面提供乙個一致的介面.facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare catch ception e finally 上例是jsp中最通常的對資料庫操作辦法.在應用中,經常需要對資料庫操作...

設計模式之Facade

facade 模式也叫外觀模式,是由gof提出的23種設計模式中的一種。facade 模式為一組具有類似功能的類群,比如類庫,子系統等等,提供乙個一致的簡單的介面 這個一致的簡單的介面被稱作facade。本文介紹設計模式中的外觀 facade 模式的概念,用法,以及實際應用中怎麼樣使用facade模...