久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      詳細(xì)介紹Java橋接模式

      本篇文章給大家?guī)砹岁P(guān)于java的相關(guān)知識(shí),其中主要介紹了橋接模式的相關(guān)問題,橋接模式將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立變化,降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度,下面一起來看一下,希望對(duì)大家有幫助。

      詳細(xì)介紹Java橋接模式

      推薦學(xué)習(xí):《java視頻教程》

      其實(shí)在現(xiàn)實(shí)生活中,有很多類可以有兩個(gè)或多個(gè)維度的變化,如圖形既可按形狀分,又可按顏色分,如果用繼承方式,m 種形狀和 n 種顏色的圖形就有 m*n 種,不但對(duì)應(yīng)的子類很多,而且擴(kuò)展比較困難。

      比如不同顏色和字體的文字、不同品牌和功率的汽車、不同性別和職業(yè)的男女、支持不同平臺(tái)和不同文件格式的媒體播放器等。如果用橋接模式就能很好地解決這些問題。


      1、橋接模式的定義

      將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立變化。它是用組合關(guān)系代替繼承關(guān)系來實(shí)現(xiàn),從而降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度

      模式類型:結(jié)構(gòu)設(shè)計(jì)模式

      原理類圖:
      詳細(xì)介紹Java橋接模式
      原理類圖說明:

      1. Client類: 橋接模式的調(diào)用者
      2. 抽象類(Abstraction) : 維護(hù)了Implementor/即它的實(shí)現(xiàn)類ConcretelmplementorA…二者是器合關(guān)系,Abstraction充當(dāng)橋接英
      3. RehinedAbstraction: 是Abstraction抽象類的子類lmplementor:行為實(shí)現(xiàn)類的接口
      4. ConcretelmplementorA/B: 行為的具體實(shí)現(xiàn)類
      5. 從UML圖: 這里的抽象類和接口是聚合的關(guān)系,其實(shí)調(diào)用和被調(diào)用關(guān)系

      2、橋接模式的優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):

      1. 抽象與實(shí)現(xiàn)分離,擴(kuò)展能力強(qiáng)
      2. 符合開閉原則
      3. 符合合成復(fù)用原則
      4. 其實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明

      缺點(diǎn):

      • 由于聚合關(guān)系建立在抽象層,要求開發(fā)者針對(duì)抽象化進(jìn)行設(shè)計(jì)與編程,能正確地識(shí)別出系統(tǒng)中兩個(gè)獨(dú)立變化的維度,這增加了系統(tǒng)的理解與設(shè)計(jì)難度

      3、橋接模式的結(jié)構(gòu)

      橋接(Bridge)模式包含以下主要角色:

      1. 抽象化(Abstraction)角色: 定義抽象類,并包含一個(gè)對(duì)實(shí)現(xiàn)化對(duì)象的引用
      2. 擴(kuò)展抽象化(Refined Abstraction)角色:是抽象化角色的子類,實(shí)現(xiàn)父類中的業(yè)務(wù)方法,并通過組合關(guān)系調(diào)用實(shí)現(xiàn)化角色中的業(yè)務(wù)方法
      3. 實(shí)現(xiàn)化(Implementor)角色:定義實(shí)現(xiàn)化角色的接口,供擴(kuò)展抽象化角色調(diào)用
      4. 具體實(shí)現(xiàn)化(Concrete Implementor)角色:給出實(shí)現(xiàn)化角色接口的具體實(shí)現(xiàn)

      結(jié)構(gòu)圖:

      詳細(xì)介紹Java橋接模式
      該結(jié)構(gòu)圖的實(shí)現(xiàn)代碼:

      實(shí)視化角色:

      /**  * 實(shí)視化角色  */public interface Implemntor {      public void OperationImpl();}

      具體實(shí)現(xiàn)化角色:

      /**  * 具體實(shí)現(xiàn)化角色  */public class ConcreteImplementorA implements Implemntor{     @Override     public void OperationImpl() {         System.out.println("具體實(shí)現(xiàn)化角色被訪問");     }}

      抽象化角色:

      /**  * 抽象化角色  */public abstract class Abstraction {      protected Implemntor implemntor;      protected Abstraction(Implemntor implemntor){         this.implemntor = implemntor;     }      public abstract void Operation();}

      擴(kuò)展抽象化角色:

      /**  * 擴(kuò)展抽象化角色  */public class RefinedAbstraction extends Abstraction{      protected RefinedAbstraction(Implemntor implemntor) {         super(implemntor);     }      public void Operation(){         System.out.println("擴(kuò)展抽象化角色被訪問");         implemntor.OperationImpl();     }}

      測(cè)試類:

      public class Test {     public static void main(String[] args) {          Implemntor implemntor = new ConcreteImplementorA();         Abstraction abs = new RefinedAbstraction(implemntor);         abs.Operation();      }}

      輸出:

      擴(kuò)展抽象化角色被訪問 具體實(shí)現(xiàn)化角色被訪問

      4 、橋接模式的案例實(shí)現(xiàn)

      將實(shí)現(xiàn)與抽象放在兩個(gè)不同的類層次中,使兩個(gè)層次可以獨(dú)立改變

      交通工具在路上行駛,這里有兩個(gè)維度的變化,交通工具的類型不同路也分水泥路和柏油路

      類圖:
      詳細(xì)介紹Java橋接模式

      交通工具類:

      /**  * 交通工具類  */public interface Vehicle {      public void drive();}

      具體的交通工具:小汽車

      /**  * 具體的交通工具:小汽車  */public class Car implements Vehicle{     @Override     public void drive() {         System.out.println("小汽車");     }}

      具體的交通工具:大巴車

      /**  * 具體的交通工具:大巴車  */public class Bus implements Vehicle{     @Override     public void drive() {         System.out.println("大巴車");     }}

      抽象的路:

      /**  * 抽象的路  */public abstract class Road {      protected Vehicle vehicle;      public Road(Vehicle vehicle){         this.vehicle = vehicle;     }      public abstract void driveOnRoad();}

      具體的路:油柏路

      /**  * 具體的路:油柏路  */public class UnpavedRoad extends Road{     public UnpavedRoad(Vehicle vehicle) {         super(vehicle);     }      @Override     public void driveOnRoad() {          super.vehicle.drive();         System.out.println("行駛在油柏路");     }}

      具體的路:水泥路

      /**  * 具體的路:水泥路  */public class CementRoad extends Road{     public CementRoad(Vehicle vehicle) {         super(vehicle);     }      @Override     public void driveOnRoad() {         super.vehicle.drive();         System.out.println("行駛在水泥路");     }}

      測(cè)試類:

      //測(cè)試public class Test {     public static void main(String[] args) {          Road roadCar = new CementRoad(new Car());         roadCar.driveOnRoad();          Road roadBus = new CementRoad(new Bus());         roadBus.driveOnRoad();      }}

      輸出:

      小汽車 行駛在水泥路 大巴車 行駛在水泥路

      5、橋接模式的注意事項(xiàng)

      1. 實(shí)現(xiàn)了抽象和實(shí)現(xiàn)部分的分離,從而極大的提供了系統(tǒng)的靈活性,讓抽象部分和實(shí)現(xiàn)部分獨(dú)立開來,這有助于系統(tǒng)進(jìn)行分層設(shè)計(jì),從而產(chǎn)生更好的結(jié)構(gòu)化系統(tǒng)
      2. 對(duì)于系統(tǒng)的高層部分,只需要知道抽象部分和實(shí)現(xiàn)部分的接口就可以了,其它的部分由具體業(yè)務(wù)來完成
      3. 橋接模式替代多層繼承方案,可以減少子類的個(gè)數(shù),降低系統(tǒng)的管理和維護(hù)成本
      4. 橋接模式的引入增加了系統(tǒng)的理解和設(shè)計(jì)難度,由于聚合關(guān)聯(lián)關(guān)系建立在抽象層,要求開發(fā)者針對(duì)抽象進(jìn)行設(shè)計(jì)和編程
      5. 橋接模式要求正確識(shí)別出系統(tǒng)中兩個(gè)獨(dú)立變化的維度,因此其使用范圍有一定的局限性,即需要有這樣的應(yīng)用場(chǎng)景

      6、橋接模式應(yīng)用場(chǎng)景

      對(duì)于那些不希望使用繼承或因?yàn)槎鄬哟卫^承導(dǎo)致系統(tǒng)類的個(gè)數(shù)急劇增加的系統(tǒng),橋接模式尤為適用.

      推薦學(xué)習(xí):《java視頻教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)