摘要:他們兩個互相獨(dú)立,不會影響到對方對于兩個獨(dú)立變化的維度,使用橋接模式再適合不過了。
橋接設(shè)計(jì)模式
橋接設(shè)計(jì)模式是許多其他設(shè)計(jì)模式的基礎(chǔ),比如裝飾模式, 代理模式都或多或少看到他的影子, 在面向?qū)ο笤O(shè)計(jì)中最重要的一個特點(diǎn)就是繼承, 然而作為拓展類的功能的方式有兩種 -- 繼承和橋接, 橋接用我簡單的理解就是放棄使用繼承的方式拓展類, 而是采用包含另一個具有一定功能的對象來拓展類, 下面來看兩種結(jié)構(gòu)
首先我們假設(shè)有一個需求, 有一個圖形接口, 然后有長方形, 正方形, 圓形等圖形類, 我們需要各種顏色的圖形, 下面用繼承和橋接的方式來實(shí)現(xiàn)這種需求.
繼承
橋接
橋接模式結(jié)構(gòu) 實(shí)現(xiàn)
圖形抽象類
let Shape = function(color) { this.color = color; }; Shape.prototype.setColor = function(color) { this.color = color; }; Shape.prototype.draw = function() { new Error(); }
圖形類
let Rectangle = function (color) { Shape.call(this, color); }; extend(Rectangle, Shape); Rectangle.prototype.draw = function () { color.bepaint("長方形"); }; let Square = function (color) { Shape.call(this, color); }; extend(Square, Shape); Square.prototype.draw = function () { color.bepaint("正方形"); } let Circle = function (color) { Shape.call(this, color); }; extend(Circle, Shape); Circle.prototype.draw = function () { color.bepaint("圓型"); };
顏色抽象類
let Color = function() { }; Shape.prototype.bepaint = function() { new Error(); };
顏色類
let Red = function () { Color.call(this); }; extend(Red, Color); Red.prototype.bepaint = function(shape) { console.log("白色的" + shape); }; let Green = function () { Color.call(this); }; extend(Green, Color); Green.prototype.bepaint = function(shape) { console.log("綠色的" + shape); }; let Blue = function () { Color.call(this); }; extend(Blue, Color); Blue.prototype.bepaint = function(shape) { console.log("藍(lán)色的" + shape); };
使用
let red = new Red(); //正方形 let square = new Square(); //紅色的正方形 square.setColor(red); square.draw(); //長方形 let rectange = new Rectangle(); //紅色長方形 rectange.setColor(red); rectange.draw();
橋式設(shè)計(jì)適用于一個類存在兩個或多個獨(dú)立變化的維度,且這兩個維度都需要進(jìn)行擴(kuò)展,
橋接模式實(shí)現(xiàn)了抽象化與實(shí)現(xiàn)化的脫耦。他們兩個互相獨(dú)立,不會影響到對方, 對于兩個獨(dú)立變化的維度,使用橋接模式再適合不過了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/107559.html
摘要:更多前端技術(shù)和知識點(diǎn),搜索訂閱號菌訂閱橋接模式實(shí)際上就是將邏輯抽象和具體的實(shí)現(xiàn)分離。以追加字符串到文件中為例代碼從變?yōu)樯厦娲a是讀取某個文件并在文件中追加字符串,最后調(diào)用回調(diào)函數(shù)。請關(guān)注我的訂閱號,不定期推送有關(guān)的技術(shù)文章,只談技術(shù)不談八卦 showImg(https://segmentfault.com/img/remote/1460000020002974?w=640&h=426)...
摘要:橋接模式中的所謂脫耦,就是指在一個軟件系統(tǒng)的抽象化和實(shí)現(xiàn)化之間使用關(guān)聯(lián)關(guān)系組合或者聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以相對獨(dú)立地變化,這就是橋接模式的用意。 0x01.定義與類型 定義:將抽象部分與它的具體實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。 橋接模式將繼承關(guān)系轉(zhuǎn)化成關(guān)聯(lián)關(guān)系,它降低了類與類之間的耦合度,減少了系統(tǒng)中類的數(shù)量,也減少了代碼量。 橋接模式中的所謂脫耦,就是指在一個軟...
閱讀 3169·2023-04-25 18:54
閱讀 2667·2021-11-02 14:40
閱讀 3278·2021-09-23 11:58
閱讀 2492·2019-08-30 13:50
閱讀 1291·2019-08-29 12:46
閱讀 3180·2019-08-28 17:51
閱讀 736·2019-08-26 11:47
閱讀 956·2019-08-23 16:17