簡體   English   中英

如何從Java中不同類的對象獲取公共屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM