![](/img/trans.png)
[英]How to instantiate a certain subclass depending on an identifier, or is there a better way?
[英]How can i instantiate a different subclass based on common identifier (java)
我有一個用於瓷磚的 class。
public abstract class Tile {
public Position pos;
public char chr;
}
以及許多擴展 tile 的不同類。 每個子類都有自己的標識符 char。 現在我有一個 function 接收一個字符和一個 position 並且需要創建並返回一個瓷磚子類的新實例,該實例適合給定 position 中的字符。 除了運行所有選項之外,是否有一種優雅的 OOP 方法可以做到這一點?
所以對我來說,使用這樣的標識符有點設計缺陷。
您可以在抽象 class 中添加類似以下內容:
public static Tile factory(char identifier, Position p) {
Tile value = null;
switch (identifier) {
case `x`: {
value = new XTile(p);
break;
}
default {
// throw an exception or provide a default
}
}
return value
}
有效的 Java(第三版)第 21 項“首選 Class 層次結構而不是標記類”可能會為您的設計提供替代方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.