<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java設計模式學習記錄-橋接模式

      前言

      這次介紹結構型設計模式中的第二種模式,橋接模式。 使用橋接模式的目的就是為了解耦,松散的耦合更利于擴展,但是會增加相應的代碼量和設計難度。

       

      橋接模式

      橋接模式是為了將抽象化與實現化解耦,讓二者可以獨立地變化。方便對每一部分的擴展,以及單獨的維護。抽象化的一方與實現化的一方之間建立一個橋梁,這樣兩者的依賴關系就可以通過這個橋梁來建立了。

      舉例

      三個小動物要過河,分別是小豬,小雞,小馬,小豬要去河對面的空地曬太陽,小雞要去河對面的小樹林里找蟲子吃,小馬要去河對面的草地里吃草。那么它們三個都要經過小橋才能過河。有了場景下面來說一下代碼的實現,先創建一個小橋的接口。

      /**
       * 小橋
       */
      public interface Bridge {
      
          /**
           * 目的地
           */
          void targetLand();
      }

      因為三個小動物的目的地不一樣,所以每一個目的地對應一個實現。

      小豬的目的地

      /**
       * 空地
       */
      public class VacantLand implements Bridge{
      
          /**
           * 目的地
           */
          @Override
          public void targetLand() {
              System.out.println("空曠的地方,曬太陽");
          }
      }

      小雞的目的地

      /**
       * 小樹林
       */
      public class Forest implements Bridge{
      
          /**
           * 目的地
           */
          @Override
          public void targetLand() {
              System.out.println("小樹林,覓食。");
          }
      }

      小馬的目的地

      /**
       * 草地
       */
      public class Grassland implements Bridge{
          /**
           * 目的地
           */
          @Override
          public void targetLand() {
              System.out.println("大草原,盡情奔騰。");
          }
      }

      下面來實現抽象化的部分,每個小動物都要過橋去往不同的目的地,所以它們都要相同的過橋行為。所以定義一個動物抽象類。

      /**
       * 小動物
       */
      public abstract class Animal {
      
          /**
           * 橋
           */
          Bridge bridge;
      
          /**
           * 過橋
           */
          abstract void willToDo();
      }

      小豬

      /**
       * 小豬
       */
      public class Piglet extends Animal {
          /**
           * 過橋
           */
          @Override
          public void willToDo() {
              System.out.println("我是小豬要過橋去 ");
          }
      }

      小雞

      /**
       * 小雞
       */
      public class Chick extends Animal {
          /**
           * 過河橋
           */
          @Override
          public void willToDo() {
              System.out.println("我是小雞要過橋去 ");
          }
      }

      小馬

      /**
       * 小馬
       */
      public class Pony extends Animal {
          /**
           * 過橋
           */
          @Override
          public void willToDo() {
              System.out.println("我是小馬要過橋去 ");
          }
      }

      測試例子

      public class TestBridge {
      
          public static void main(String[] args) {
      
              Animal animal = new Chick();
      
              animal.bridge = new Forest();
              animal.willToDo();
              animal.bridge.targetLand();
          }
      }

      運行結果

      我是小雞要過橋去 
      小樹林,覓食。

      這就是一個完整的橋接模式的例子,這樣使得小動物和要去的目的地解耦了。如果再來了一個小動物,例如小鴨子,它只需要繼承Animal類即可,如果它的目的地已經存在了就直接使用現有的目的地類,如果要去的目的地不存在(例如小鴨子要去池塘),那么可以再創建一個池塘的目的地,然后實現自Bridge就可以了。

      結構

      下面來介紹一下橋接模式的結構,如下圖所示。

       

       

       從上面的結構圖中我們可以看出來,橋接模式其實是分為四個角色的。

      抽象化角色(Animal類):定義抽象化,并保存一個對實現化對象的引用。

      抽象化擴展角色(Chick、Piglet、Pony等具體的小動物類):實現和擴展抽象化角色的功能。

      實現化角色(Bridge接口):此角色給出了實現化角色的接口,定義了實現化角色的行為。

      具體實現化角色(VacantLand、GrassLand、Forest等目的地類):實現化角色接口的具體實現類。

      橋接模式的優缺點 

      優點

      1、分離抽象和實現部分:

      分離了抽象和實現部分,提高了系統的靈活性,這樣有助于對系統進行分層,從而產生更好的結構化的系統。

      2、更好的擴展性:

      因為抽象部分和實現部分分離開了,所以這兩部分可以獨立擴展,互不影響,大大提高了系統的可擴展性。

      3、可動態切換:

      由于分離了抽象和實現,那么在實現橋接的時候,可以實現動態的選擇和使用具體的實現,也就是在運行期間動態切換實現。

      4、減少了子類的數量:

      從抽象和實現兩個維度來看,如果不是用橋接模式的話,這兩個維度的子類,在發生變化時影響到的數量是兩個維度子類的乘積。而使用了橋接模式后影響到的數量是兩個維度的子類的和。

      缺點

      增加了系統的理解和設計難度,入手并不是那么容易了,因為聚合關系定義在抽象層,所以需要開發者對抽象進行設計和編程。

       

       

       

       

      想了解更多的設計模式請查看Java設計模式學習記錄-GoF設計模式概述

      posted @ 2018-07-15 19:12  紀莫  閱讀(877)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产va免费精品观看| 亚洲欧美日韩成人一区| 日韩高清国产中文字幕| 国内熟女中文字幕第一页| 久久99精品久久久久久| 精品国产粉嫩一区二区三区| 免费AV片在线观看网址| 国产精品久久中文字幕| 中文字幕一区二区精品区 | 日韩一卡二卡三卡四卡五卡| 国产午夜三级一区二区三| 91国产自拍一区二区三区| 风流少妇树林打野战视频| 成人精品一区日本无码网| 亚洲综合中文字幕第一页| 日韩人妻无码精品系列| 久久精品蜜芽亚洲国产av| 亚洲精品天堂在线观看| 日韩乱码人妻无码中文字幕视频| 国产成人一区二区不卡| 99久久国语露脸精品国产| 四虎影院176| 欧美大胆老熟妇乱子伦视频| 成人免费无码大片a毛片| 国产日韩av二区三区| 国产中文字幕在线精品| 亚洲一级特黄大片一级特黄| 欧洲精品免费一区二区三区| 亚洲精品日韩在线观看| 韩国午夜理伦三级| 国产精品夜夜春夜夜爽久久小说| 亚洲一区二区精品动漫| 白丝乳交内射一二三区| 亚洲综合国产精品第一页| 好紧好湿太硬了我太爽了视频| 亚洲av无码牛牛影视在线二区| 给我播放片在线观看| 丰满熟妇乱又伦在线无码视频| 国产精一品亚洲二区在线播放| 欧美乱码卡一卡二卡四卡免费| 久久精品手机观看|