亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

爪哇語言結構性模式之變壓器模式介紹(上)

2019-11-18 12:16:36
字體:
來源:轉載
供稿:網友

  什么是結構性模式
  結構性模式描述類和對象怎樣結合在一起成為較大的結構。 結構性模式描述兩種不同的東西:類與類的實例。根據它們所描述的東西的不同, 結構性模式可以分為類結構模式和實例結構模式兩種。
  類結構模式使用繼續(inheritance)來把類,接口等組合在一起,形成更大的結構。 當一個類從父類繼續,并實現某接口時,這個新的類就把父類的結構和接口的結構結合起來。 類結構模式是靜態的。一個類結構模式的典型的例子,就是類形式的變壓器模式。
  實例結構模式描述各種不同類型的把對象組合在一起,實現新的功能的方法。實例結構模式是動態的。 一個典型的實例結構模式,就是代理人模式,代理人模式將在以后介紹。其它的例子包括后面將要介紹的復合模式, 飛行重量模式,裝飾模式,以及實例形式的變壓器模式等。
  有一些模式會有類結構模式的形式和實例結構模式的形式兩種,成為以上兩種形式的結構模式的極好注解。 本節要介紹的變壓器模式就是這樣,它有類形式和實例形式兩種。
  變壓器模式的介紹
  變壓器模式把一個類的接口變換成客戶端所期待的另一種接口。變壓器模式使原本無法在一起工作的兩個類能夠在一起工作。 如前所述,變壓器模式是關于類結構的結構性模式,因而是靜態的模式。
  這很象變壓器(Adapter)---變壓器把一種電壓變換成另一種電壓。當我把美國的電器拿回中國大陸去用的時候, 我就面臨電壓不同的問題。美國的生活用電壓是110伏,而中國的電壓是220伏。我假如要在中國大陸使用我在美國使用的電器, 我就必須有一個能把220伏電壓轉換成110伏電壓的變壓器。而這正象是本模式所做的事,因此此模式被稱為變壓器模式。
  讀者可能也會想到,Adapter在中文也可翻譯為轉換器(適配器)。實際上,轉換器(適配器)也是一個合適的名字。仍用電器作例子, 美國的電器的插頭一般是三相的,即除了陽極,陰極外,還有一個地極。中國大陸的建筑物內的電源插座一般只有兩極,沒有地極。 這時候,即便電器的確可以接受220伏電壓,電源插座和插頭不匹配,也使電器無法使用。 一個三相到兩相的轉換器(適配器)就能解決這個問題。因此此模式也可被稱為轉換器(適配器)模式。
  同時,這種做法也很象包裝過程,被包裝的物體的真實樣子被包裝所掩蓋和改變,因此有人把這種模式叫做包裝(Wrapper)模式。事實上, 我們經常寫很多這樣的wrapper類,把已有的一些類包裹起來,使之能有滿足需要的接口。
  變壓器模式有類形式和實例形式兩種不同的形式。
  類形式的變壓器模式的類圖定義如下。
   爪哇語言結構性模式之變壓器模式介紹(上)(圖一)
  圖1. 類形式的類變壓器模式的類圖定義
  在圖1可以看出,模式所涉及的成員有:
  目標(Target)。這就是我們所期待得到的接口。注重,由于這里討論的是類變壓器模式,因此目標不可以是類。
  源(Adaptee)?,F有需要適配的接口。
  變壓器(Adapter)。變壓器類是本模式的核心。變壓器把源接口轉換成目標接口。顯然,這一角色不可以是接口, 而必須是實類。
  本模式的示范代碼如下:
  package com.javapatterns.adapter.classAdapter;
  public interface Target
  {
  /**
   * Class Adaptee contains Operation sampleOperation1.
   */
  void sampleOperation1();
  /**
   * Class Adaptee doesn't contain operation sampleOperation2.
   */
  void sampleOperation2();
  }
  代碼清單1. Target的源代碼。
  package com.javapatterns.adapter.classAdapter;
  public class Adaptee
  {
   public void
  sampleOperation1(){}
  }
  代碼清單2. Adaptee的源代碼。
  package com.javapatterns.adapter.classAdapter;
  public class Adapter extends Adaptee implements Target
  {
  /**
   * Class Adaptee doesn't contain operation sampleOperation2.
   */
  public void sampleOperation2()
  {
  // Write your code here
  }
  }
  代碼清單3. Adapter的源代碼。
  類形式的變壓器模式的效果
  第一、 使用一個實類把源(Adaptee)適配到目標(Target)。這樣一來,假如你想把源以及源的子類都使用此類適配, 就行不通了。
  第二、 由于變壓器類是源的子類,因此可以在變壓器類中置換(override)掉源的一些方法。
  第三、 由于只引進了一個變壓器類,因此只有一個路線到達目標類。問題得到簡化。
  實例形式的變壓器模式的類圖定義如下。
  爪哇語言結構性模式之變壓器模式介紹(上)(圖二)
  在圖1可以看出,模式所涉及的成員有:
  目標(Target)。這就是我們所期待得到的接口。目標可以是實的或抽象的類。
  源(Adaptee)?,F有需要適配的接口。
  變壓器(Adapter)。變壓器類是本模式的核心。變壓器把源接口轉換成目標接口。 顯然,這一角色必須是實類。
  本模式的示范代碼如下:
  package com.javapatterns.adapter;
  public interface Target {
  /**
   * Class Adaptee contains operation sampleOperation1.
   */
  void sampleOperation1();
  /**
   * Class Adaptee doesn't contain operation sampleOperation2.
   */
  void sampleOperation2();
  }
  代碼清單4. Target的源代碼。
  package com.javapatterns.adapter;
  public class Adapter implements Target {
  public Adapter(Adaptee adaptee){
  super();
  this.adaptee = adaptee;
  }
  public void sampleOperation1(){  adaptee.sampleOperation1();
  }
  public void sampleOperation2(){
  // Write your code here
  }
  PRivate Adaptee adaptee;
  }
  代碼清單5. Adapter的源代碼。
  package com.javapatterns.adapter;
  public class Adaptee {
  public void sampleOperation1(){}
  }
  代碼清單6. Adaptee的源代碼。
  實例形式的變壓器模式的效果
  第一、 一個變壓器可以把多種不同的源適配到同一個目標。換言之,同一個變壓器可以把源類和它的子類都適配到目標接口。
  第二、 與類形式的變壓器模式相比,要想置換源類的方法就不輕易。假如一定要置換掉源類的一個或多個方法,就只好先做一個源類的子類, 將源類的方法置換掉,然后再把源類的子類當作真正的源進行適配。
  第三、 雖然要想置換源類的方法不輕易,但是要想增加一些新的方法則方便得很。 而且新增加的方法同時適用于所有的源。
  在什么情況下使用變壓器模式
  在以下各種情況下使用變壓器模式:
  第一、 你需要使用現有的類,而此類的接口不符合你的需要。
  第二、 你想要建立一個可以重復使用的類,用以與一些彼此之間沒有太大關聯的一些類, 包括一些可能在將來引進的類一起工作。這些源類不一定有很復雜的接口。
  第三、 (對實例形式的變壓器模式而言)你需要改變多個已有的子類的接口, 假如使用類形式的變壓器模式,就要針對每一個子類做一個變壓器類,而這不太實際。
  J2SE中的變壓器模式的使用
  在爪哇語言2.0的標準SDK中,有很多的變壓器類。如:
  庫程序包java/awt/event中有
  ComponentAdapter
  ContainerAdapter
  FocusAdapter
  HierarchyBoundsAdapter
  KeyAdapter
  MouseAdapter
  MouseMotionAdapter
  WindowAdapter
  庫程序包Javax/swing/event中有
  InternalFrameAdapter
  MouseInputAdapter
  這些都是變壓器模式使用的實際例子。值得指出的是,WindowAdapter的建立者們不可能預見到你所要使用的目標接口, 因此WindowAdapter不可能實現你的目標接口。但是,在考察了這些變壓器類的使用范圍之后,我們會發現, WindowAdapter只需實現WindowListener的接口即可,也就是說,目標接口被省略了。請見下面的解釋。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品视频网站| 国产亚洲一区二区精品| 色综合久久中文字幕综合网小说| 亚洲欧洲国产伦综合| 欧美午夜片在线免费观看| 亚洲精品456在线播放狼人| 亚洲精品有码在线| 国产人妖伪娘一区91| 伊人久久精品视频| 海角国产乱辈乱精品视频| 亚洲欧美三级伦理| 国产精品高清免费在线观看| 久久天天躁狠狠躁夜夜躁| 国产亚洲精品久久| 日韩精品一区二区视频| 国产日本欧美一区二区三区| 在线不卡国产精品| 欧美视频在线观看 亚洲欧| 亚洲a区在线视频| 自拍偷拍亚洲在线| 日韩免费在线视频| 精品日韩视频在线观看| 日本欧美一级片| 日韩一区在线视频| 亚洲free性xxxx护士白浆| 久久久精品久久| 成人国内精品久久久久一区| 色综合伊人色综合网| 欧美激情一二区| 国产精品成人aaaaa网站| 亚洲午夜国产成人av电影男同| 日韩欧美极品在线观看| 国产精品视频午夜| 欧美精品在线极品| 亚洲欧美另类中文字幕| 久久全国免费视频| 最新国产成人av网站网址麻豆| 日本免费在线精品| 日韩欧美aⅴ综合网站发布| 91日本视频在线| 国产精品丝袜白浆摸在线| 国产精品视频中文字幕91| 色yeye香蕉凹凸一区二区av| 久久久久国产精品免费| 久久av在线看| 成人网在线免费看| 久久99视频精品| 亚洲va欧美va国产综合剧情| 欧美在线视频导航| 久久精品亚洲一区| 欧美成人免费va影院高清| 欧美亚洲另类在线| 超在线视频97| 97超级碰碰碰久久久| 久久久久久久久久久久av| 国模私拍视频一区| 日本成人免费在线| 国产a∨精品一区二区三区不卡| 亚洲深夜福利网站| 亚洲成人精品久久| 亚洲网址你懂得| 国产亚洲精品美女久久久久| 欧美成人午夜免费视在线看片| 国产精品一区二区三区免费视频| 亚洲一区二区三区乱码aⅴ| 国产成人短视频| 国内精品小视频在线观看| 国产精品你懂得| 欧美极品欧美精品欧美视频| 久久精品亚洲热| 欧美孕妇孕交黑巨大网站| 最近日韩中文字幕中文| 一区二区欧美激情| 奇米4444一区二区三区| 伊人久久五月天| 亚洲欧美日韩国产成人| 国产精品网红福利| 亚洲最大中文字幕| 亚洲国产天堂久久综合| 91高潮精品免费porn| 久久男人的天堂| 欧美成在线观看| 亚洲美女激情视频| 成人美女免费网站视频| 国产一区二区黑人欧美xxxx| 成人中文字幕+乱码+中文字幕| 欧美精品久久久久久久免费观看| 91精品免费久久久久久久久| 91精品视频在线看| 亚洲免费视频在线观看| 97久久久免费福利网址| 高清欧美一区二区三区| 97婷婷涩涩精品一区| 中文字幕少妇一区二区三区| 国产综合色香蕉精品| 97精品一区二区视频在线观看| 亚洲欧洲日产国产网站| 91精品免费久久久久久久久| 色在人av网站天堂精品| 在线观看精品自拍私拍| 国内精品免费午夜毛片| 日韩高清电影免费观看完整| 久久久成人的性感天堂| 国产精品免费福利| 68精品国产免费久久久久久婷婷| 国产精品激情自拍| 亚洲午夜精品视频| 国产日韩一区在线| 伊人久久大香线蕉av一区二区| 国产一区二区黄| 91在线中文字幕| 欧美激情精品久久久久久蜜臀| 亚洲电影成人av99爱色| 亚洲大胆美女视频| 日韩欧美国产视频| 国产精品一区二区三区在线播放| 国产不卡av在线免费观看| 欧美乱大交xxxxx另类电影| 欧美午夜精品在线| 日本久久久久久久久久久| 国产精品视频午夜| 亚洲免费电影一区| 亚洲精品综合久久中文字幕| 日韩少妇与小伙激情| 91成人在线观看国产| 日韩av手机在线看| 亚洲午夜性刺激影院| 亚洲一区亚洲二区亚洲三区| 成人有码在线播放| 高清欧美性猛交xxxx黑人猛交| 国产乱人伦真实精品视频| 久久99国产精品自在自在app| 国产成人一区二区| 久久久精品美女| 日韩成人高清在线| 国产精品草莓在线免费观看| 久久久亚洲影院| 精品视频中文字幕| 欧美国产视频一区二区| 亚洲欧美日韩一区二区三区在线| 亚洲精品mp4| 麻豆一区二区在线观看| 久热精品视频在线| 国产亚洲精品va在线观看| 亚洲专区在线视频| 精品久久久久久久久久久久久久| 亚洲国产成人精品电影| 国产91精品高潮白浆喷水| 91av在线影院| 欧美有码在线观看| 伊人亚洲福利一区二区三区| 91亚洲永久免费精品| 欧美福利视频在线观看| 国产精品自拍偷拍| 97色在线观看| 久久亚洲精品毛片| 国产成人福利网站| 久久精品国产成人精品| 欧美激情亚洲精品| 成人欧美在线观看| 日韩欧美亚洲国产一区| 国外成人在线播放| 国产精品久久久久久久电影| 性色av一区二区三区在线观看|