對介面有新的需求,應如何處理?

2021-08-23 13:52:36 字數 855 閱讀 2323

在通用元件api設計中,如果有介面的變更需求,怎麼做才能既能實現新的需求,又能與以往使用這個元件的系統相容,並且又盡量不增加我們維護介面的工作量呢?

例如以下的場景:

有介面a:

inte***ce a

其實現的方法c:

class c implements a }

現在有新的需求:在原來的介面的方法中增加乙個引數。我們應該怎麼去做?

如果我們

直接修改原來的介面,改為:

inte***ce a

這樣做會導致以前所用支援介面

a的系統都需要根據我們的變化進行修改,會導致使用我們介面的系統不可取。可以使用下面的方法:

方法一. 定義乙個新的介面,擴充套件原來的介面,並且在裡面定義我們需要的新的方法,這樣原來的系統使用新的介面也仍然是支援的:

inte***ce b

對於原先實現介面a的類c,使其去實現介面b中的方法:

class c implements a,b public void method1(string arg1, string arg2) }

這樣,對外公開的介面有介面a沒有變,只改變了它的實現方法,對於原來使用介面a的系統,並不會由於元件的變化而產生額外的影響。

方法二: 定義乙個新的介面b,使之擴充套件介面a:

inte***ce b extends a

讓原來的類c實現介面b:

class c implements b public void method1(string arg1, string arg2) }

方法二的介面b因為擴充套件了介面a,介面之間存在依賴關係,所以使用方法一會更利於介面的維護。

304標記對SEO的影響,如何處理?

304 not modified是什麼意思?簡單理解 304錯誤狀態碼是當客戶端嘗試訪問伺服器同一頁面的時候,如果二次訪問的時候,頁面內容並沒有發生改變,那麼伺服器就會返回304狀態碼,嚴格意義上講,它並不是一種錯誤。304狀態碼產生的原因 頁面長時間不更新 如果你的頁面內容長時間不更新,比如 靜態...

設計模式學習筆記 之四 如何處理變化的需求

如果我們能夠以不變應萬變,那麼我們是相當的成功了,這是個無法完成的任務。但如果我們能以最小的代價來應對這變化無窮的需求,那麼我們就沒有失敗.為了解決變化的需求帶給我們的困惑,也為了 到底有沒有 功能分解 這外的其他選擇,我們還是回到現實生活中看看人們是如何做事的,細心的觀察,耐心的體會,會發現一些我...

阿里軟體研發總監葉偉 如何處理技術和需求的矛盾

無論是開發人員還是leader,儘管角色不同,但他們都不過是整個開發團隊的一部分,他們的目標也都一致 應和需求 完成專案開發。他們也經常在開發過程中遇到技術和需求之間產生的矛盾,那麼這些矛盾該如何調解 當需求出現描述模糊的時候又該怎樣處理呢?為此,記者採訪了阿里軟體研發中心總監葉偉。葉偉認為技術和需...