[英]How to get common properties from objects of different classes in java
我有一個對象說的汽車,它有不同的方法來獲得不同汽車制造商的汽車,例如,奧迪,寶馬,梅賽德斯等。所有這些汽車類別上沒有任何通用的接口或抽象類,但具有一些共同的屬性,例如車輪,制動器等汽車對象具有一種方法,該方法可以識別應使用哪種類型的制造商對象來提取屬性。 有人可以建議我從汽車物體上提取車輪的好方法嗎?
public class Car {
public Audi getAudi() { return this.audi; }
public BMW getBMW() { return this.bmw; }
public Merc getMerc() { return this.merc; )
public String getMaker() { return this.maker; }
}
public class Audi {
public Wheel getWheel() { return this.wheel; }
public Brakes getBrakes() { return this.brakes; }
}
public class BMW {
public Wheel getWheel() { return this.wheel; }
public Brakes getBrakes() { return this.brakes; }
}
public class Merc{
public Wheel getWheel() { return this.wheel; }
public Brakes getBrakes() { return this.brakes; }
}
首先,如果所有類都具有相同的(邏輯)方法,則它確實具有一個接口,而不僅僅是一個正式的接口,因此您的首要任務是實現一個所有類都必須實現的正式接口。
另外,您可以使用反射來獲取所有方法並在其中解析名稱,但是此方法麻煩且容易出錯(如果您的方法簽名過於復雜,則太可怕了)。
另外,您可以使Car類抽象,並為GetWheel()
, GetBrakes()
等提供抽象方法。
另外,似乎您應該使用工廠模式來保存getAudi()
, getBMW()
, getMerc()
方法。 根據您要實現的目標,它們可以保存一個Car Map實例(如果您使用的是單個實例),也可以返回新實例(可以是匿名的Inner類,而不是具體的類)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.