2011-09-21 33 views
5

鑑於以下UML表示,我如何獲得BullDog的實例,該實例只有getter方法暴露?生成一個類的只讀副本,howto

  • BullDog的實例不應該有任何可用的setter方法。
  • 實例BullDog的應該只有getter方法(其中3)可

基本上問題是..我該投new BullDog什麼?

enter image description here

+0

btw ...如果myDog.getMetabolism()返回爲「不健康」的東西。你的界面名稱會是一種反直覺 – Shawn

+0

,爲什麼只有健康的寵物才能獲得新陳代謝?當然,所有寵物都可以返回新陳代謝率,然後才能確定健康狀況。 –

回答

4

由於HealthyPet與寵物無關有什麼可以轉換爲這將使你的所有3種getter方法(getMetabolism()的getName()和getAge())。現在,如果HealthyPet延長寵物(並且我不確定它爲什麼不會),那麼您就可以開展業務了。因爲這樣你就可以投向HealthyPet,返回這個接口,而一個調用者只會看到3個getter方法(當然我沒有花哨的反省,應該讓他們發現所有的東西)。

+0

優秀。謝謝你,先生! – JAM

1

您需要HealthyPet來擴展寵物。然後你將你的BullDog實例投射到HealthyPet。