程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 實例解析Java設計形式編程中的適配器形式應用

實例解析Java設計形式編程中的適配器形式應用

編輯:關於JAVA

實例解析Java設計形式編程中的適配器形式應用。本站提示廣大學習愛好者:(實例解析Java設計形式編程中的適配器形式應用)文章只能為提供參考,不一定能成為您想要的結果。以下是實例解析Java設計形式編程中的適配器形式應用正文


日常平凡我們會常常碰著如許的情形,有了兩個現成的類,它們之間沒有甚麼接洽,然則我們如今既想用個中一個類的辦法,同時也想用別的一個類的辦法。有一個處理辦法是,修正它們各自的接口,然則這是我們最不肯意看到的。這個時刻Adapter形式就會派上用處了。

Adapter形式也叫適配器形式,是由GoF提出的23種設計形式的一種。Adapter形式是結構型形式之一,經由過程Adapter形式,可以轉變已有類(或內部類)的接口情勢。
適配器 形式 有三種方法,一種是對象適配器,一種是類適配器, 一種是接口適配器
以下舉例解釋:
1.類適配器

類圖

public class DrawRectangle {//畫方 
  public void drawRectangle(String msg) { 
    System.out.println("draw Rectangle: " + msg); 
  } 
} 

public interface IDrawCircle {//畫圓的接口 
  void drawCircle(); 
} 


/** 
 * 類適配器 應用對象繼續的方法,是靜態的界說方法 
 * @author stone 
 * 
 */ 
public class DrawAdapter4Class extends DrawRectangle implements IDrawCircle {//既能畫方又能畫圓 
 
  @Override 
  public void drawCircle() { 
    System.out.println("DrawAdapter4Class: drawCircle"); 
  } 
   
} 

2.對象適配器

類圖:

/** 
 * 對象適配器: 應用對象組合的方法,是靜態組合的方法。 
 * 既能畫方又能畫圓 
 * @author stone 
 * DrawAdapter是適配器,DrawRectangle屬於adapter,是被適配者,適配器將被適配者和適配目的(DrawCircle)停止適配 
 * 
 */ 
public class DrawAdapter4Object implements IDrawCircle {//既能畫方又能畫圓 
   
  private DrawRectangle drawRectangle; 
  public DrawAdapter4Object(DrawRectangle drawRectangle) { 
    this.drawRectangle = drawRectangle; 
  } 
   
  @Override 
  public void drawCircle() { 
    System.out.println("DrawAdapter4Object: drawcircle"); 
  } 
   
  public void drawRectangle(String msg) { 
    drawRectangle.drawRectangle(msg); 
  }  
   
} 

3.接口適配器
類圖

/* 
 * 接口適配器:接口中有籠統辦法,我們只想完成個中的幾個,不想全體完成, 
 * 所以供給一個默許空完成,然後繼續自它,重寫完成我們想完成的辦法 
 */ 
public interface IDraw { 
  void drawCircle(); 
  void drawRectangle(); 
} 

/* 
 * 接口適配器 的默許完成 
 */ 
public class DefaultDrawAdapter implements IDraw {//畫方 畫圓 皆為空完成 
 
  @Override 
  public void drawCircle() { 
     
  } 
 
  @Override 
  public void drawRectangle() { 
     
  } 
} 


public class Test { 
  public static void main(String[] args) { 
    //對象適配器 
    DrawAdapter4Object objAdapter = new DrawAdapter4Object(new DrawRectangle()); 
    objAdapter.drawCircle(); 
    objAdapter.drawRectangle(" in DrawAdapter4Object"); 
     
    System.out.println("--------------"); 
     
    //類適配器 
    DrawAdapter4Class clzAdapter = new DrawAdapter4Class(); 
    clzAdapter.drawCircle(); 
    clzAdapter.drawRectangle("in DrawAdapter4Class"); 
     
    System.out.println("--------------"); 
     
    //接口適配器 
    MyDrawAdapter myDrawAdapter = new MyDrawAdapter(); 
    myDrawAdapter.drawCircle(); 
    myDrawAdapter.drawRectangle(); 
  } 
   
  static class MyDrawAdapter extends DefaultDrawAdapter { 
 
    @Override 
    public void drawCircle() { 
      System.out.println("drawCircle in MyDrawAdapter"); 
    } 
     
  } 
} 


打印

DrawAdapter4Object: drawcircle 
draw Rectangle: in DrawAdapter4Object 
-------------- 
DrawAdapter4Class: drawCircle 
draw Rectangle: in DrawAdapter4Class 
-------------- 
drawCircle in MyDrawAdapter 


適配器形式的三個特色:

1 適配器對象完成原有接口
2 適配器對象組合一個完成新接口的對象(這個對象也能夠不完成一個接口,只是一個純真的對象)
3 對適配器原有接口辦法的挪用被拜托給新接口的實例的特定辦法

有人以為講授設計形式的例子都太簡略,看著感到是那末回事,然則如果真想在項目開辟中應用,還真是運用不到。其實我們不用在項目中銳意應用設計形式,而是應當從現實的設計成績動身,看哪一個形式能處理我們的成績,就應用哪一個形式。不要為了應用形式而應用形式,那樣就本末倒置了,普通情形下,只需遵守必定的設計准繩便可以了,設計形式也是依據這些准繩被總結出來的,熟習了這些准繩,形式天然而然就有了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved