亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

結構型設計模式--橋接模式(Bridge)

系統 2140 0

橋接模式 (Bridge)


??? 將抽象部分與實現部分分離,使它們都可以獨立的變化。


??? 在軟件系統中,某些類型由于自身的邏輯,它具有兩個或多個維度的變化,那么如何應對這種“多維度的變化”?如何利用面向對象的技術來使得該類型能夠輕松的沿著多個方向進行變化,而又不引入額外的復雜度?這就要使用Bridge模式。


??? 效果及實現要點:
??? (1) Bridge模式使用“對象間的組合關系”解耦了抽象和實現之間固有的綁定關系,使得抽象和實現可以沿著各自的維度來變化。


??? (2) Bridge模式的應用一般在“兩個非常強的變化維度”,有時候即使有兩個變化的維度,但是某個方向的變化維度并不劇烈——換言之兩個變化不會導致縱橫交錯的結果,并不一定要使用Bridge模式。

?

結構型設計模式--橋接模式(Bridge)

?

??? 拿汽車在路上行駛的來說。即有小汽車又有公共汽車,它們都不但能在市區中的公路上行駛,也能在高速公路上行駛。這你會發現,對于交通工具(汽車)有不同的類型,然而它們所行駛的環境(路)也在變化,在軟件系統中就要適應兩個方面的變化?怎樣實現才能應對這種變化呢?

    // 抽象路
public abstract class AbstractRoad {
	protected AbstractCar car;

	public AbstractCar getCar() {
		return car;
	}

	public void setCar(AbstractCar car) {
		this.car = car;
	}

	public abstract void run();
}

// 高速公路
public class SpeedWay extends AbstractRoad {
	public void run() {
		car.run();
		System.out.println("高速公路上行駛");
	}
}

// 市區街道
public class Street extends AbstractRoad {
	public void run() {
		car.run();
		System.out.println("市區街道上行駛");
	}
}

// 抽象汽車
public abstract class AbstractCar {
	public abstract void run();
}

// 小汽車;
public class Car extends AbstractCar {
	public void run() {
		System.out.println("小汽車在");
	}
}

// 公共汽車
public class Bus extends AbstractCar {
	public void run() {
		System.out.println("公共汽車在");
	}
}

public class Client {
	public static void main(String[] args) {
		// 小汽車在高速公路上行駛;
		AbstractRoad road1 = new SpeedWay();
		road1.setCar(new Car());
		road1.run();
		// 公共汽車在高速公路上行駛;
		AbstractRoad road2 = new SpeedWay();
		road2.setCar(new Bus());
		road2.run();
	}
}
  

????

??? 增加一個維度"人",不同的人開著不同的汽車在不同的路上行駛(三個維度)

    public abstract class People {
	protected AbstractRoad road;

	public AbstractRoad getRoad() {
		return road;
	}

	public void setRoad(AbstractRoad road) {
		this.road = road;
	}

	public abstract void run();
}

public class Man extends People {
	public void run() {
		System.out.println("男人開著");
		road.run();
	}
}

public class WoMan extends People {
	public void run() {
		System.out.println("女人開著");
		road.run();
	}
}

public class Client {
	public static void main(String[] args) {
		// 男人開著公共汽車在高速公路上行駛;
		AbstractRoad road3 = new SpeedWay();
		road3.setCar(new Bus());
		People p = new Man();
		p.setRoad(road3);
		p.run();
	}
}

  

?

??? 橋接模式很好的符合了開放-封閉原則和優先使用合成(而不是繼承)這兩個面向對象原則組合模式?

結構型設計模式--橋接模式(Bridge)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产91福利在线精品剧情尤物 | 天天干天天操天天干 | 性欧美videos高清喷水 | 免费视频网站在线观看黄 | 最新中文字幕日本 | 中文字幕亚洲综合 | 羞羞视频免费在线观看 | 久久99国产精一区二区三区 | 国产精品18久久久久网站 | 日本a∨网站 | 亚洲国产精品ⅴa在线观看 亚洲国产精品aa在线看 | a级做人爱免费播放 | 四虎影视4hutv最新地址在线 | 国产免费一区二区三区免费视频 | 亚洲深夜在线 | 色资源网站 | 欧美日韩国产一区三区 | 色综合网站国产麻豆 | 亚洲人xx视频 | 国产高清在线精品一区免费97 | 手机看片国产欧美日韩高清 | 国产精彩视频 | 欧美aaaaaaaa| 在线观看精品91老司机 | se成人国产精品 | 欧美日韩激情在线一区 | 国产色婷婷精品综合在线 | 欧美一级毛片久久精品 | 中文字幕一区视频一线 | 中国特级黄一级真人毛片 | 久久午夜影院 | 极品吹潮视频大喷潮tv | 一级特黄女人生活片 | 亚洲毛片儿 | 日韩成人高清 | yellow中文字幕久久网 | 国产女人水多毛片18 | 久久国产免费一区 | 亚洲人成一区二区不卡 | 久久国产精品成人免费 | 四虎永久在线精品国产免费 |