簡體   English   中英

獲取實例應返回類型實施者類或接口類型的對象

[英]Get Instance should return object of type implementor class or of type interface

我有以下課程:

public class NinjaImpl implements Ninja{
   private NinjaImple () {}
   public static Ninja getInstance() {return Singleton.instance;}
   private static class Singleton
   {
        private static final Ninja instance = new NinjaImpl();
   }

   // Implementation
}

我和一位同事進行了設計討論。 內部類應持有NinjaImpl類型還是ninja類型的變量。 以同樣的方式, getInstance()應該返回Ninja或NinjaImpl嗎?

通常, getInstance()應該返回接口,因為它允許您更改實現類而不影響接口的用戶。

但是,由於在您的情況下, getInstance()是實現類的方法,所以getInstance()的用戶已經依賴於實現類,而不管其返回的類型是什么,所以這並不重要,我不確定在這種情況下完全定義Ninja接口是否有用。

如果getInstance()是某種工廠類的方法(將其NinjaFactory ),則返回該接口更有意義,該方法可以返回它選擇返回的Ninja接口的任何實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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