亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么時候適合在棋盤游戲中使用 Java 接口?

什么時候適合在棋盤游戲中使用 Java 接口?

千巷貓影 2022-10-20 17:01:38
(注意:這更像是一個理論問題)你好!我創建了一個名為 checkers 的工作棋盤游戲,它有點像國際象棋,只是有不同的棋子和規則,而且我在不使用任何界面的情況下完成了這項工作。但是,我注意到它在我們的家庭作業說明中說至少應該使用一個接口。所以我想知道什么時候在 java 中使用接口是合適的,或者更具體地說,什么時候在棋盤游戲(如跳棋或國際象棋)中使用接口是有益的?我試圖了解我可以為什么創建一個界面(如動作、繪制到板上等),同時最有可能使程序受益。
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

對接口進行編程始終是一種好習慣,因為它將類形式化為具有一組所需的方法。它還可以收集實現了通用接口的類以協同工作。想象一下,您有許多具有 setColor 方法的對象。不必單獨設置顏色或通過每種類型對象的列表設置顏色,您可以讓它們執行以下操作:


Interface ColorSetter {

   public void setColor(Color color);

}


class Foo implements ColorSetter {

//details omitted

}


class Bar implements ColorSetter {

//details omitted

}


List<ColorSetter> colorSetters = new ArrayList<>();

colorSetters.add(new Foo());

colorSetters.add(new Bar());


// later...

for (ColorSetter c : colorSetters) {

   c.setColor(Color.blue);

}


查看完整回答
反對 回復 2022-10-20
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

任何類型的編程語言中的接口都是指定兩方之間行為和抽象通信的合同。當您設計軟件解決方案時,您希望按照最佳實踐和模式構建它,以便將來更容易維護。

特別是在 Java 中,您同時擁有抽象類和接口。接口聲明了一個類應該做什么(Java8+ 中的接口提供了指定行為的方法,默認情況下是實際方法,但我猜你的家庭作業還沒有打算這樣做。)由于您正在開發游戲,因此可能有興趣抽象所有部分都應該處理的功能。他們應該知道如何給出他們的位置,知道他們是否仍然活躍在游戲中,知道適用于它的規則。您還可以抽象游戲期間執行的動作。每個動作都有其適用的特定部分或部分,知道它何時可以執行以及如何執行自身,甚至如何撤消它。你的游戲類也可以有一個列表來保存游戲中的動作歷史。

您可以通過閱讀 SOLID 原則和檢查常見的軟件設計模式(例如https://refactoring.guru/)來擴展您的知識。


查看完整回答
反對 回復 2022-10-20
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

通常,您的代碼中有一些抽象。這意味著一些行為和數據可以被概括并封裝在一些通用類型中——這可能是一個接口。你已經提到了一些——比如碎片——有沒有一個叫做 Piece 的界面?還有運動 - 是否有一個名為運動的界面?


例如,一個 Piece 接口可能有一些常見的方法,例如:


public interface Piece {

    String getName();

    Position getPosition();

    List<Movement> getAvailableMovements();

    void move(Movement movement);

    BufferdImage getImage();

}

而 Piece 只會實現這些方法,因此擁有一塊你知道它的名稱、位置、圖像、可用動作并且你可以移動它的部件。這只是抽象的命題,可能不完全適合您的設計。但是以這種方式,您可以只使用 Piece 而不是專門的類,在您的程序中提供它。


查看完整回答
反對 回復 2022-10-20
  • 3 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號