我一直在使用兩個庫,SFML和Box2D,同時也非常痛苦,以確保它們的函數或類都不會暴露在我的代碼的主體中,將它們隱藏在僅僅服務於行爲的類後面作爲我的代碼和庫本身之間的中介。我的調解員採取以下形式:外部庫應該包裝?
class MyWindow{
public:
// could be 10 or so functions like below
int doSomething(int arg){
return library_window->doSomething(arg);
};
private:
library::window * library_window;
};
的好處這一點,至少是有人告訴我,是我的主要代碼身體是不是在圖書館依賴,以這樣一種方式,如果它的變化或我選擇使用另一個,比如說SDL或OpenGL來代替SFML或者其他的東西,我可以通過修改中介類來切換。但是,爲每個要使用的功能編碼接入點的痛苦是痛苦和重複的...
這真的是專業程序員應該如何處理外部庫?這值得嗎?
我是否正在做這個權利?
透明與不透明類比是一種可視化的好方法,謝謝!標記這個答案,因爲它也觸及了其他答案的要點,並將它們作爲一個整體整合在一起。我將從頭開始重寫我的包裝,這次增加了功能和簡單性,而不是僅僅懶惰地放置在庫的頂部。 –