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