簡體   English   中英

Class 適配器模式在 Java

[英]Class adapter pattern in Java

interface movement{
    void jump();    //Jump is 1 Feet high
}

class mario(){
    void specificJump(int feet);   //Use variable feet to jump higher than 1 Feet
}

public class myAdapter extends mario implements movement{
    int feet;
    public void jump(){
        specificJump(feet); 
    }
}

運動是一個單一方法的界面,可以讓你跳 1 英尺高。
mario 是一個 class ,它有一個方法 specificJump(int feet) 可以讓你跳到 1 英尺以上。
myAdapter 的實現應該像這樣工作:

  1. 聲明變量 int 腳
  2. 通過聲明和初始化public void jump()實現界面移動
  3. 使用 function specificJump(feet) 跳轉到 int feet 的高度

因此,當嘗試調用 jump() 時,您實際上將執行 specificJump(feet)。

問題:為了執行 specificJump(int feet) 我們首先需要調用 jump()。
但是 specificJump(int feet) 需要一個參數,是否可以像我一樣在 myAdapter 中聲明 int feet?
我的問題是,當您必須在沒有參數的情況下調用 jump() 時,如何獲得 int feet 值? (使用 Class 適配器模式)

無效跳轉(); //跳躍是1英尺高

好吧,如果這是接口契約,則實現不應違反該契約並允許跳躍高於 1 英尺。

因此,您可能會有:

class MovableMario extends Mario implements Movement {
    @Override
    public void jump() {
        specificJump(1);
    }
}

無論哪個客戶需要跳躍特定高度,仍然可以使用mario.specificJump(feet)

請注意,該設計非常有限,理想情況下,適配器將以裝飾器的形式出現並委托給內部Mario

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM