Digamos que quería definir una interfaz que representa una llamada a un servicio remoto. Ahora, la llamada al servicio remoto generalmente arroja algo, pero también puede incluir parámetros de entrada. Supongamos que una clase implementadora generalmente solo implementará un método de servicio. Teniendo en cuenta la información anterior, es el siguiente un diseño pobre (no acaba de sentirse derecha):Interfaz genérica
public interface IExecutesService<A,B>
{
public A executeService();
public A executeService(B inputParameter);
}
Ahora, digamos que puedo implementar esta interfaz con una clase que ejecuta un servicio remoto con un parámetro de entrada:
public class ServiceA implements IExecutesService<String,String>
{
public String executeService()
{
//This service call should not be executed by this class
throw new IllegalStateException("This method should not be called for this class...blabla");
}
public String executeService(String inputParameter)
{
//execute some service
}
tengo dos preguntas con respecto a la anterior:
- es el uso de un interace genérica (
IExecutesService<A,B>
) bien en el caso en que se desea proporcionar subclases, que requ ¿Hay diferentes parámetros de entrada y retorno para los métodos de interfaz? - ¿Cómo puedo hacer lo anterior mejor? Es decir. Quiero agrupar mis ejecutores de servicios bajo una interfaz común (
IExecutesService
); sin embargo, una clase implementadora típicamente solo implementará uno de los métodos, y el uso de una IllegalStateException se siente realmente desagradable. Además, el parámetro tipo B enIExecutesService<A,B>
será redundante para una clase implementadora que llama a un servicio sin ningún parámetro de entrada. También parece excesivo crear dos interfaces separadas para las dos llamadas de servicio diferentes.
Agradeceré sus comentarios sobre esto.
Saludos.
perfecta que estaba buscando esta – VedX