關於解耦的思考

2021-08-20 21:58:36 字數 1881 閱讀 1569

前言

以前記得在知乎上看過,乙個神奇的例子,大致上來說就是乙個手機接觸到了金屬湯匙,結果手機顯示檢測的未知裝置。其實從一方面看來這也算是乙個**復用的思想吧。

在設計程式的時候,我們都會盡力提高**的復用性,這也導致在方法中會產生依賴的關係,但是對於使用者而言,依賴關係會新增諸多的限制,因此在設計程式的時候會傾向於高內聚,低耦合,內聚是模組內部自身各個元素的緊密聯絡,而低耦合則傾向於減少模組於模組之間的依賴關係從而讓使用者的限制減少。

關於解耦的方式現在一般傾向於利用面向介面的形式實現,而不是利用類,因為一是如果使用類的結果便是傳入的引數必須是該類的本身或子類的物件,這便產生了一定的約束也就是耦合,二是這樣可能會暴露一些例項域中的資料,而如果使用介面的話,可以在很大程度上減少這種耦合關係。

這裡假設以類繼承實現**的復用:

public

class slot

}

public

class

typec

extends

slot

}

public

class

usbextends

slot

}

public

public

static

void

insert(slot inter)

public

static

void

main(string args)

}

public

class basic

public string getname()

public

void

setname(string name)

}

public

class

others

extends

basic

public

void

dosomething()

}

public

class

otheradapter

extends

slot

@override

public

void

dosomething()

}

不過也是由於耦合較高因此不得不使用乙個介面卡來實現,但是如果使用介面的話可以大大降低這種耦合程度

public

inte***ce slot

那麼只要實現這個介面便可以

public

class

others

extends

basic

implements

slot

public

void

dosomething()

}

public

class

otheradapter

implements

slot

@override

public

void

dosomething()

}

(當然這裡的介面卡用的是**,如果想依然可以利用otheradapter繼承others來實現適配)這樣我們可以對這個otheradapter進行更高程度的擴充套件了,而如果用以前的類繼承的化就會有一定程度上的限制了。所以介面可以才很大程度上減輕耦合。

關於stylus的方法解耦

廢話不多說直接上圖 將文字過長後新增省略號的方法抽離 並且使用 mixins.stylus 方法 ellipsis overflow hidden white space nowrap text overflow ellipsis在vue元件中使用,這裡可能會出現不生效的問題,只需要在父元素中新增 ...

解耦的簡單理解

重用性是物件導向設計的主要目標之一,而緊耦合便是它的敵人。當我們看到系統中乙個元件的改變迫使系統其他許多地方也發生改變的時候,就可以診斷為緊耦合了。簡單實現 class registrationmgr abstract class notifier else abstract function in...

對於解耦的理解

以三層為例子 在bll層中建立dal層的某個物件 iuserdal userdal dalabstractfactory.createuserdal 即層之間的關聯降到最低,這樣我們很容易想到引用乙個第三方來作為中間介質。這就引出了介面,在層中要建立其他層的某個物件時,用介面來接收這個物件,這個介面...