我們知道,在實際的專案開發中,客戶的需求是經常發生變化的。那如果說,我們不採用介面程式設計,那我們就必須修改我們業務層的**。長此以往,這樣做的後果是什麼呢?答:bug多,不易維護,接手困難
如果我們採用介面程式設計的話:我們只需要在介面中把客戶的需求提取出來, 寫在介面中。這樣,客戶的需求變化時,我們可以實現響應介面的新的實現類,這樣就不需要更改原來的**,這樣就避免了諸多問題。
另外,在設計模式的原則裡的開閉原則,就是要使用介面來實現對擴充套件開放,對修改關閉。這樣也是為了減少各個類之間的依賴。
還有就是,介面開發,小組成員分工合作,互不干擾。適於團隊的協作開發。
介面程式設計也不盡然都是好處。缺點就是介面設計困難,因為,還沒實現,就得把所有的東西想好。
先來看個例子:
兩種方式inte***ce a
public
class
bimplements
a public
void
drink()
}
我們先來看第一種:a a = new b();//向上轉型,即類b的物件的引用賦值給介面
b b = new b();//正常的例項化。
這種方式,在上面的例子中,只能這樣寫:
a.eat()
而當你這樣寫時:
a.drink()
這種方式是會報錯的。錯誤內容為:
the method drink() is undefined for the type a
這是因為,在本例中,b在向上轉型為a的時候,是「失去」,而非「得到」。也就是說,「a」的功能窄化!
如果這樣寫:((b)a).drink()//向下轉型
是可以呼叫的。
我們在來看第二種:
第二種理所當然了,連個方法都可以呼叫。無需多言。
那我們的結論是什麼? 應該
優先使用
第一種,
前提時,
存在「合
理」的接
口時應 該優
先使用第
一種,前
提時,存
在「合理
」的介面
時
redis的好處以及應用
redis的好處 a 速度比較快 因為資料是在記憶體中的,b 支援較多的資料型別 比如 string list set map 等 c 支援事物 操作都是源自性的 對於資料而言要麼全部執行 要麼全部不執行 d 豐富的特性 可用於快取 訊息 設定key的過期時間 與memcached相比較的優勢 re...
解耦的好處以及哪來的這麼多好處
關於解耦合的乙個現實例子 跟大部分餐飲企業一樣,星巴克也主要致力於將訂單處理的吞吐量最大化。顧客訂單越多,收入就越多。為此,他們採取了非同步處理的辦法。你在點單時,收銀員取出乙隻咖啡杯,在上面作上記號表明你點的是什麼,然後把這個杯子放到佇列裡去。這裡的佇列指的是在咖啡機前排成一列的咖啡杯。正是這個佇...
執行緒鎖的使用 和好處 以及缺點
上面寫錯了函式名 是mutex.acquire import threading from threading import thread from threading import lock number 0 lock lock def work3 global number for i in r...