場景:差分
[更新] 類債權人可以是組織或人員的類型。債權人可以是A型,B型或C型。這裏A型是Org,B型是Personnel。我想知道如何以最好的Java-ISH方式實現這一點。
- 這兩個類都實現了一個接口,並且這個第三個類是這些類實現的接口的一個實例。 (使用接口作爲一種類型)
OR
- 有一個通用的類,所以我可以實例化我想要的任何類? (使用泛型類)
哪個更優選或者是他們完全不同的 的事情嗎?我錯過了什麼?還有解釋。
我有以下兩類組織和人員。
public class Org implements Entity{
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public Org(String name){
this.setName(name);
}
}
public class Personnel implements Entity{
private String name;
private String phoneNumber;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public void setPhoneNumber(){..}
public Personnel(String name){
this.setName(name);
}
}
所述接口實體,以上的類實現」
interface Entity{
String getName();
}
情況1和情況2的代碼如下。
情況1
在這裏,第三類命名債權人可以是一個組織或一個人員,所以我已經添加了一個實體界面作爲類型,以將此類債權人的這個 引用爲組織或個人對象。
public class Creditor{
public Entity entity;
public Creditor(Entity entity){
this.entity = entity;
}
public static void main(String[] args){
Org o = new Org("Name");
Creditor c = new Creditor(o);
Personnel p = new Personnel("AJ");
Creditor c1 = new Creditor(p);
}
}
OR
病例2
而不是使用接口,爲什麼不讓我使用泛型類型框和實例按心願我想要的對象,像 例如人事或組織。
public class Creditor<T> {
private T t;
public Creditor(T t){
this.t = t;
}
public static void main(String[] args){
Org o = new Org("Name");
Personnel p = new Personnel("AJ");
Creditor<Org> c1 = new Creditor<>(o);
Creditor<Personnel> c2 = new Creditor<>(p);
}
}
我猜*案例中的代碼加倍*情況1說清楚了,這不是一個好方法。如果你創建2個'Creditor'可以使用的額外類,會發生什麼?創建越來越多的構造函數?使用案例2並將您的類更改爲'public class Creditor'。 –
Tom
因爲投票人沒有評論他/她爲什麼這樣做,因此得票最多。 – Ruraj
除非你告訴我們你想用'Creditor'做什麼,我們不能給你一個答案。 @Tom:如果你不寫'Creditor(Entity)'構造函數,那麼只有重複的代碼。 – fabian