黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統 2291 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論