2010-05-03 19 views
8

Tengo un componente que necesita llamar a un servicio específico dependiendo de la entrada que recibe. Entonces, mi componente tiene que mirar la entrada y en función de una configuración que dice "para esta entrada, llame a este servicio con esta información" necesita llamar al servicio adecuado. Los servicios tienen un método de firma común y uno específico (cada uno).¿Hay un patrón de diseño para esto?

Pensé en una clase abstracta que incluye las firmas para los tres métodos. La implementación de los dos servicios anulará los tres métodos (arrojando NotImplementedException para los métodos que no son compatibles con el servicio actual). También se definirá un componente que podría inicializarse con un mapa (que para cada tipo de entrada tendrá el tipo de servicio a ser llamado).

¿Tiene un mejor enfoque para hacer frente a este escenario?

Respuesta

6

Factory pattern tiene esta definición:

Definir una interfaz para crear un objeto , pero vamos subclases deciden qué clase instanciar. Fábrica método permite que una clase diferir de instancias a las subclases

suena como lo que quieres, ¿verdad?

+1

Pensé (etiquetado) sobre el DP de fábrica, pero en este caso tiene que combinarse con algún otro patrón, para ser "configurable". Estaba pidiendo un enfoque existente de esta manera. – ytrewq

+0

Además, esto podría asociarse con el patrón de agrupación Singleton o Object – ytrewq

+0

. La fachada o el patrón del adaptador pueden ser dignos de considerar al permitir alguna configuración, creo. –

0

Microsoft llama esto al Provider Model Design Pattern. Aunque dado que sus métodos no implementan todos los métodos, tal vez no sea una buena opción.

At its most basic level the pattern is:

  • una clase base abstracta que define un contrato . La clase base abstracta tiene todos los métodos abstractos y propiedades necesarias para implementar la API pública que admite.

  • Información de configuración. Una vez creada la implementación de la clase del proveedor de características , debe describirse en la sección de configuración. La descripción del proveedor dentro de la configuración proporciona toda la información para que el proveedor pueda ser instanciado en la aplicación en ejecución.

La clase base abstracta por lo general debe apoyar métodos de fábrica para crear nuevos objetos.

0

El patrón de diseño de Estrategia es ideal para su problema. Una estrategia encapsula un algoritmo y debe ejecutarse según el tipo de datos que tenga como entrada.

Cuestiones relacionadas