設計模式之外觀模式

2021-09-07 03:13:35 字數 1813 閱讀 8757

在做一些大型的應用時可能會採用分布式通過系統整合來進行資料的流動,例如erp系統,它就會分人力資源系統,進銷存系統,財務系統等,而在這些系統中可能會又有幾個子系統,在這系統之間難免會有資料的流動,但每個系統內部也比較複雜。比如幾個分公司分布部署有一套erp系統,總部可能要在月底做一月結,如果直接呼叫這些子系統那樣會非常的麻煩, 那要怎麼解決呢?外觀模式就是乙個不錯的選擇。

一、定義:為子系統中的一組介面提供乙個一致的介面,定義乙個高層介面,這個介面使得這一子系統更加容易使用。

二、結構圖

三、適用場景及優缺點

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

(1)設計初期階段,應該有意識的將不同層分離,層與層之間建立外觀模式。

(2) 開發階段,子系統越來越複雜,增加外觀模式提供乙個簡單的呼叫介面。

(3) 維護乙個大型遺留系統的時候,可能這個系統已經非常難以維護和擴充套件,但又包含非常重要的功能,為其開發乙個外觀類,以便新系統與其互動。

優點:(1)實現了子系統與客戶端之間的

松耦合關係。

(2)客戶端遮蔽了子系統元件,減少了客戶端所需處理的物件數目,並使得子系統使用起來更加容易。

四、實現

#import

@inte***ce

systema : nsobject

-(void

)userinfofromsystema;

-(void

)backupsystema;

@end

#import

"systema.h

"@implementation

systema

-(void

)userinfofromsystema

-(void

)backupsystema

@end

#import

@inte***ce

systemb : nsobject

-(void

)userinfofromsystemb;

-(void

)backupsystemb;

@end

#import

"systemb.h

"@implementation

systemb

-(void

)userinfofromsystemb

-(void

)backupsystemb

@end

#import

@inte***ce

facade : nsobject

-(void

)userinfo;

-(void

)backup;

@end

#import

"facade.h

"#import

"systema.h

"#import

"systemb.h

"@implementation

facade

-(void

)userinfo

-(void

)backup

@end

五、效果

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...

設計模式之外觀模式

外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...

設計模式之外觀模式

外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...