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);
}

TA貢獻1779條經驗 獲得超6個贊
任何類型的編程語言中的接口都是指定兩方之間行為和抽象通信的合同。當您設計軟件解決方案時,您希望按照最佳實踐和模式構建它,以便將來更容易維護。
特別是在 Java 中,您同時擁有抽象類和接口。接口聲明了一個類應該做什么(Java8+ 中的接口提供了指定行為的方法,默認情況下是實際方法,但我猜你的家庭作業還沒有打算這樣做。)由于您正在開發游戲,因此可能有興趣抽象所有部分都應該處理的功能。他們應該知道如何給出他們的位置,知道他們是否仍然活躍在游戲中,知道適用于它的規則。您還可以抽象游戲期間執行的動作。每個動作都有其適用的特定部分或部分,知道它何時可以執行以及如何執行自身,甚至如何撤消它。你的游戲類也可以有一個列表來保存游戲中的動作歷史。
您可以通過閱讀 SOLID 原則和檢查常見的軟件設計模式(例如https://refactoring.guru/)來擴展您的知識。

TA貢獻1848條經驗 獲得超10個贊
通常,您的代碼中有一些抽象。這意味著一些行為和數據可以被概括并封裝在一些通用類型中——這可能是一個接口。你已經提到了一些——比如碎片——有沒有一個叫做 Piece 的界面?還有運動 - 是否有一個名為運動的界面?
例如,一個 Piece 接口可能有一些常見的方法,例如:
public interface Piece {
String getName();
Position getPosition();
List<Movement> getAvailableMovements();
void move(Movement movement);
BufferdImage getImage();
}
而 Piece 只會實現這些方法,因此擁有一塊你知道它的名稱、位置、圖像、可用動作并且你可以移動它的部件。這只是抽象的命題,可能不完全適合您的設計。但是以這種方式,您可以只使用 Piece 而不是專門的類,在您的程序中提供它。
添加回答
舉報