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

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

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

      【設(shè)計(jì)模式】如何通過(guò)橋接模式解決系統(tǒng)擴(kuò)展難題?

      概述

      現(xiàn)在有一個(gè)需求,需要?jiǎng)?chuàng)建不同的圖形,并且每個(gè)圖形都有可能會(huì)有不同的顏色。我們可以利用繼承的方式來(lái)設(shè)計(jì)類(lèi)的關(guān)系:

      我們可以發(fā)現(xiàn)有很多的類(lèi),假如我們?cè)僭黾右粋€(gè)形狀或再增加一種顏色,就需要?jiǎng)?chuàng)建更多的類(lèi)。

      試想,在一個(gè)有多種可能會(huì)變化的維度的系統(tǒng)中,用繼承方式會(huì)造成類(lèi)爆炸,擴(kuò)展起來(lái)不靈活。每次在一個(gè)維度上新增一個(gè)具體實(shí)現(xiàn)都要增加多個(gè)子類(lèi)。為了更加靈活的設(shè)計(jì)系統(tǒng),我們此時(shí)可以考慮使用橋接模式。

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

      結(jié)構(gòu)

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

      • 抽象化(Abstraction)角色 :定義抽象類(lèi),并包含一個(gè)對(duì)實(shí)現(xiàn)化對(duì)象的引用。

      • 擴(kuò)展抽象化(Refined Abstraction)角色 :是抽象化角色的子類(lèi),實(shí)現(xiàn)父類(lèi)中的業(yè)務(wù)方法,并通過(guò)組合關(guān)系調(diào)用實(shí)現(xiàn)化角色中的業(yè)務(wù)方法。

      • 實(shí)現(xiàn)化(Implementor)角色 :定義實(shí)現(xiàn)化角色的接口,供擴(kuò)展抽象化角色調(diào)用。

      • 具體實(shí)現(xiàn)化(Concrete Implementor)角色 :給出實(shí)現(xiàn)化角色接口的具體實(shí)現(xiàn)。

      案例

      【例】視頻播放器

      需要開(kāi)發(fā)一個(gè)跨平臺(tái)視頻播放器,可以在不同操作系統(tǒng)平臺(tái)(如Windows、Mac、Linux等)上播放多種格式的視頻文件,常見(jiàn)的視頻格式包括RMVB、AVI、WMV等。該播放器包含了兩個(gè)維度,適合使用橋接模式。

      類(lèi)圖如下:

      代碼如下:

      //視頻文件
      public interface VideoFile {
          void decode(String fileName);
      }
      
      //avi文件
      public class AVIFile implements VideoFile {
          public void decode(String fileName) {
              System.out.println("avi視頻文件:"+ fileName);
          }
      }
      
      //rmvb文件
      public class REVBBFile implements VideoFile {
      
          public void decode(String fileName) {
              System.out.println("rmvb文件:" + fileName);
          }
      }
      
      //操作系統(tǒng)版本
      public abstract class OperatingSystemVersion {
      
          protected VideoFile videoFile;
      
          public OperatingSystemVersion(VideoFile videoFile) {
              this.videoFile = videoFile;
          }
      
          public abstract void play(String fileName);
      }
      
      //Windows版本
      public class Windows extends OperatingSystem {
      
          public Windows(VideoFile videoFile) {
              super(videoFile);
          }
      
          public void play(String fileName) {
              videoFile.decode(fileName);
          }
      }
      
      //mac版本
      public class Mac extends OperatingSystemVersion {
      
          public Mac(VideoFile videoFile) {
              super(videoFile);
          }
      
          public void play(String fileName) {
              videoFile.decode(fileName);
          }
      }
      
      //測(cè)試類(lèi)
      public class Client {
          public static void main(String[] args) {
              OperatingSystem os = new Windows(new AVIFile());
              os.play("戰(zhàn)狼3");
          }
      }
      

      好處:

      • 橋接模式提高了系統(tǒng)的可擴(kuò)充性,在兩個(gè)變化維度中任意擴(kuò)展一個(gè)維度,都不需要修改原有系統(tǒng)。如:如果現(xiàn)在還有一種視頻文件類(lèi)型wmv,我們只需要再定義一個(gè)類(lèi)實(shí)現(xiàn)VideoFile接口即可,其他類(lèi)不需要發(fā)生變化。

      • 實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶(hù)透明

      使用場(chǎng)景

      • 當(dāng)一個(gè)類(lèi)存在兩個(gè)獨(dú)立變化的維度,且這兩個(gè)維度都需要進(jìn)行擴(kuò)展時(shí)。

      • 當(dāng)一個(gè)系統(tǒng)不希望使用繼承或因?yàn)槎鄬哟卫^承導(dǎo)致系統(tǒng)類(lèi)的個(gè)數(shù)急劇增加時(shí)。

      • 當(dāng)一個(gè)系統(tǒng)需要在構(gòu)件的抽象化角色和具體化角色之間增加更多的靈活性時(shí)。避免在兩個(gè)層次之間建立靜態(tài)的繼承聯(lián)系,通過(guò)橋接模式可以使它們?cè)诔橄髮咏⒁粋€(gè)關(guān)聯(lián)關(guān)系。

      往期推薦

      posted @ 2025-03-11 12:42  程序員Seven  閱讀(57)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 东京热大乱系列无码| 999精品色在线播放| 国产一区二区三区我不卡| 国产成人av免费观看| 97色成人综合网站| 国产片AV国语在线观看手机版| 国产片AV国语在线观看手机版| 最新精品国偷自产在线美女足| 又黄又刺激又黄又舒服| 丰满人妻熟妇乱又伦精品劲 | 久久亚洲精品成人av秋霞| 中文字幕人乱码中文| 人妻少妇| 欧美一区二区三区在线观看| 欧洲免费一区二区三区视频| 九九热99精品视频在线| 国产精品无码v在线观看| 人妻有码av中文字幕久久琪| 亚洲精品有码在线观看| 亚洲综合一区二区精品导航| 久久精品国产亚洲AV麻豆长发| 秋霞电影院午夜无码免费视频| 国产亚洲AV电影院之毛片| 最新国产精品精品视频| 四虎永久精品免费视频| 国产精品高清一区二区三区 | 在线日韩日本国产亚洲| 亚洲人成电影网站色mp4| 精品粉嫩国产一区二区三区| 熟女视频一区二区在线观看| 日本一区二区三本视频在线观看 | 97精品国产91久久久久久久| 国产在线中文字幕精品| 富锦市| 国产边打电话边被躁视频| 精品精品亚洲高清a毛片| 四虎永久地址www成人| 国产va免费精品观看| 亚洲精品日韩久久精品| 免费人成黄页在线观看国产| 久久综合国产色美利坚|