摘要:簡介橋接模式將抽象部分與它的實現部分分離,使它們都可以獨立地變化。同時橋接模式也有自己的缺點大量的類將導致開發成本的增加,同時在性能方面可能也會有所減少。
1. 簡介
橋接模式(Bridge)將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
其實就是函數的封裝,比如要對某個DOM元素添加color和backgroundColor,可以封裝個changeColor函數,這樣可以在多個相似邏輯中提升智商...
有時候在多維的變化中橋接模式更加實用,比如可以提取多個底層功能模塊,比如提取運動,著色,說話模塊,球類可以具有運動和著色模塊,人類可以具有運動和說話模塊,這樣可以實現模塊的快速組裝,不僅僅是實現與抽象部分相分離了,而是更進一步功能與抽象相分離,進而 提升逼格 靈活的創建對象。
class Speed { // 運動模塊 constructor(x, y) { this.x = x this.y = y } run() { console.log(`運動起來 ${this.x} + ${this.y}`) } } class Color { // 著色模塊 constructor(cl) { this.color = cl } draw() { console.log(`繪制顏色 ${this.color}`) } } class Speak { constructor(wd) { this.word = wd } say() { console.log(`說話 ${this.word}`) } } class Ball { // 創建球類,可以著色和運動 constructor(x, y, cl) { this.speed = new Speed(x, y) this.color = new Color(cl) } init() { this.speed.run() this.color.draw() } } class Man { // 人類,可以運動和說話 constructor(x, y, wd) { this.speed = new Speed(x, y) this.speak = new Speak(wd) } init() { this.speed.run() this.speak.say() } } const man = new Man(1, 2, "hehe?") man.init() // 運動起來 1 + 2 說話 hehe?3. 總結
橋接模式的優點也很明顯,我們只列舉主要幾個優點:
分離接口和實現部分,一個實現未必不變地綁定在一個接口上,抽象類(函數)的實現可以在運行時刻進行配置,一個對象甚至可以在運行時刻改變它的實現,同將抽象和實現也進行了充分的解耦,也有利于分層,從而產生更好的結構化系統。
提高可擴充性
對客戶隱藏實現細節。
同時橋接模式也有自己的缺點:
大量的類將導致開發成本的增加,同時在性能方面可能也會有所減少。
本文是系列文章,可以相互參考印證,共同進步~
JS 抽象工廠模式
JS 工廠模式
JS 建造者模式
JS 原型模式
JS 單例模式
JS 回調模式
JS 外觀模式
JS 適配器模式
JS 利用高階函數實現函數緩存(備忘模式)
JS 狀態模式
JS 橋接模式
JS 觀察者模式
網上的帖子大多深淺不一,甚至有些前后矛盾,在下的文章都是學習過程中的總結,如果發現錯誤,歡迎留言指出~
參考:
設計模式之橋接模式
《Javascript 設計模式》 - 張榮銘
PS:歡迎大家關注我的公眾號【前端下午茶】,一起加油吧~
另外可以加入「前端下午茶交流群」微信群,長按識別下面二維碼即可加我好友,備注加群,我拉你入群~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90349.html
摘要:他們兩個互相獨立,不會影響到對方對于兩個獨立變化的維度,使用橋接模式再適合不過了。 橋接設計模式 橋接設計模式是許多其他設計模式的基礎,比如裝飾模式, 代理模式都或多或少看到他的影子, 在面向對象設計中最重要的一個特點就是繼承, 然而作為拓展類的功能的方式有兩種 -- 繼承和橋接, 橋接用我簡單的理解就是放棄使用繼承的方式拓展類, 而是采用包含另一個具有一定功能的對象來拓展類, 下面來...
摘要:更多前端技術和知識點,搜索訂閱號菌訂閱橋接模式實際上就是將邏輯抽象和具體的實現分離。以追加字符串到文件中為例代碼從變為上面代碼是讀取某個文件并在文件中追加字符串,最后調用回調函數。請關注我的訂閱號,不定期推送有關的技術文章,只談技術不談八卦 showImg(https://segmentfault.com/img/remote/1460000020002974?w=640&h=426)...
閱讀 3151·2023-04-26 02:33
閱讀 3106·2023-04-25 21:33
閱讀 913·2021-09-02 09:56
閱讀 2930·2019-08-30 15:44
閱讀 2464·2019-08-30 13:15
閱讀 1038·2019-08-30 13:04
閱讀 1638·2019-08-29 15:09
閱讀 3966·2019-08-26 18:26