给定:-需要在同一接口下收集的不同实现
厄运:这些实现有一个方法'create',,但是输入params的数量和类型不同,
解决办法…?除了对象的变化之外,还有什么其他的选择?
发布于 2013-07-25 08:56:53
假设您只想在您想要的接口下创建一个方法
创建一个包装类来实现您想要的接口。现在,根据某些条件调用包装类中的各种实现。
的可维护性透视
如果可能,请避免使用条件,并从调用代码中发送实现类名,.just调用作为调用代码传递的参数传递的类上的create方法。(为此,您还需要使用某个对象类作为参数创建虚拟创建方法,该方法包含每个实现类下的所有参数,这些参数将调用简单地委托给具有所需数量的params的预定方法)
发布于 2013-07-25 09:02:37
如果该方法如此灵活,那么尝试通过接口强制执行它似乎没什么意义。不过,您可以做的是实现一个接口,描述要传递的不同类型的参数。
例如:
public abstract create(CreateParamsInterface cpi) {};然后在类中实现该抽象方法,使用相关的公开va CreateParamsInterface的成员。
发布于 2013-07-25 09:06:12
在接口中,提供一个将条件作为参数的方法,您可以根据该参数决定要调用的create的哪个版本。根据条件,您可以调用相应的create(),function.The逻辑与工厂设计模式逻辑相同。
https://stackoverflow.com/questions/17853293
复制相似问题