2014-02-12 40 views
1

嗯,我正在創建一個圖書館,該圖書館需要採取所有其他圖書館,並使他們工作「相似」。在我的具體情況適配器或橋?

例如:想象一下,我有5個庫,並且所有這些庫都有相同的想法,工作到同一個案例,但他們有自己的工作方式,他們自己的API,以及我需要的是讓他們使用單個API工作。

我的想法是在工廠內部創建一個帶有「信任列表」的「工廠」,允許用戶選擇不同的庫來創建,「工廠」查看「信任列表」和如果庫真的存在,它會創建並返回庫。

但它也可以使用接口進行製作,我只能接受實現指定接口的類,在那裏我將實現所需方法的安全性,所以這意味着什麼?所有的庫都需要實現這個接口,實現這些方法併爲庫創建一個包裝器,並且這樣他們將使用相同的API。用戶可以使用工廠創建一個庫,並使用相同的API來訪問它們。

我不知道你是否理解我想解釋的內容,但是我想知道,根據我所說的,「橋接」或「適配器」模式的最佳狀況是什麼?

而且,我的想法是正確的還是我瘋了? (界面和工廠的東西,以及橋和適配器,告訴我你的想法)。

謝謝大家提前。

+0

那麼,這個庫用Java編寫的,PHP和C++?如果不是,請刪除非相關標籤。 –

+0

這並不重要,這不是關於語言,而是關於「設計模式」,實現本身。 –

+1

然後請不要添加任何編程語言標記。 –

回答

0

Bridge模式旨在將類的接口與其實現分開,以便您可以在不更改客戶端代碼的情況下更改或替換實現。

我覺得你可以指定公共的非虛擬接口,然後在這些公共函數的每一箇中使用Template Method調用實現方法。

class Basic { 
public: 
     // Stable, nonvirtual interface. 
     void A { doA();} 
     void B { doB();} 
     //... 
private: 
     // Customization is an implementation detail that may 
     // or may not directly correspond to the interface. 
     // Each of these functions might optionally be 
     // pure virtual 
     virtual void doA { impl_ -> doA();} 
     virtual void doB { impl_ -> doB();} 
}; 

這些講座可能是有用的:

Bridge pattern

Template method

+0

我想,也許我可以創建一個接口「Adapter」,它實現了我想要的所有API,併爲每個庫創建一個實現「Adapter」的類,例如:「AAdapter」,並接收「Adaptee」(我想要使​​用API​​的庫)作爲構造函數的參數(實例),然後在該「橋」(AAdapter)上實現「Adapter」的方法。我對嗎?謝謝。 –

+0

確切地說,你將以適配器myA(AAdapter),適配器myB(BAdapter) – 4pie0

+0

之類的東西結束一個例子:http://www.codeproject.com/KB/architecture/595716/image001.png - :D –

0

聽起來像適配器給我。您有多個適配器實現,這是基本多態,每個適配器都知道如何適應特定的庫。

我不明白橋模式在這裏會有什麼意義。你通常會在你使用這些庫的地方使用它,但你還不知道具體的庫實現。