我有4个Classes实现相同的Interface。类是例如

ABCXYZLMN,现在类LMN的实例可能belongTo XYZ的实例也可以是子对象。而且,如果对象是子对象,则它不应具有所有可用的作为独立对象的方法,否则其功能将有所不同。

通常,处理这种情况的最佳实践是什么。

最佳答案

似乎反直观,但您可能要考虑实现作为ChildInterface父级的第二个接口Interface。将您希望孩子使用的方法子集放在此处。

public interface ChildInterface{

    ...
}

public interface Interface extends ChildInterface{

    //add methods you don't want Children to have
}


public class XYZ implements Interface{
   ...
}


然后在您的Interface界面或XYZ类中,有一个方法

public ChildInterface getChild();


由于您所有的类都实现了这两个接口,因此可以很好地进行编译,并且可以确保返回的对象仅限于ChildInterface中的方法。

07-26 09:42