我刚刚遇到了设计接口的问题,该接口的方法可能具有可变数量的输入参数.
public interface FoobarSerialization<T> {
Foobar serialize(T obj);
}
Run Code Online (Sandbox Code Playgroud)
问题是,对于实现此接口的类,它们需要不同数量的输入参数.
public class FoobarA implements FoobarSerialization<FoobarA> {
@Override
public Foobar serialize(FoobarA obj, int bar) {
//...
}
}
public class FoobarB implements FoobarSerialization<FoobarB> {
@Override
public Foobar serialize(FoobarB obj, Date date, String str) {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
有没有好的设计或任何真正的方法来解决这个问题?我知道界面中的方法可以声明为:
Foobar serialize(T... obj);
Run Code Online (Sandbox Code Playgroud)
但我不确定这是一个设计这样的界面的好习惯.
任何想法?
更新:我使用接口的意图来自需要为不同目的进行序列化和反序列化的类集合.它们作为同一域下的组件.但是它们的序列化方法是完全不同的,特别是考虑到它们对不共享任何共同特征或类的对象和服务的依赖性.
我想这里要问的正确问题是:在设计方面,当退出一组具有相同行为(序列化,反序列化,doSomething等)但具有不同输入参数的类时,最好的方法是什么?