我正在使用兩個第三方庫來執行類似的功能。我需要能夠決定在運行時使用哪個庫(每個庫在不同類型的任務中都很優秀,我只知道在運行時需要哪一個庫用於特定任務)。合併兩個+外部庫的功能的設計模式
我試圖創建一個類,所以我可以在運行時動態調用特定庫的功能。最初,我想過使用適配器模式,但問題是兩個庫都返回不同類型的對象,並且適配器模式只在接口(或簽名)相同時纔有用。
爲了提供一個具體的例子,Selenium
框架允許我通過調用方法driver.findElement(By.Xpath("XPath"))
上一個WebDriver
實例來提取頁面的網頁元素。同樣,XSoup
框架(JSoup
的擴展)允許我通過調用Xsoup. compile("XPath").evaluate(doc).getElements();
來執行相同的功能。這兩種方法的功能是語義上等價 - 但他們都返回(並期望)兩種不同類型的對象(WebDriver
返回WebElement
和XSoup
回報Element
一個實例 - 兩個不同的對象同樣,WebDriver
期望一個driver
對象和XSoup
預計一document
要作爲參數傳入的對象)。
我的目標是通過調用單個方法(如本例中的getElement()
)來合併兩個框架的功能,並讓該方法處理調用正確的庫/框架的細節(基於傳遞給例如方法)
什麼樣的設計模式可以用來在運行時合併兩個庫的功能?
謝謝
它是不夠的,簡單的邏輯封裝到一個單一的方法,其簽名是用於訪問所需功能的_facade_?訪問此方法的客戶端代碼將不需要依賴這兩個庫。如果您發佈了迄今爲止的代碼並澄清了您認爲缺乏的內容,那麼回答該問題會更容易。 –