2010-11-11 10 views
5

Tengo un objeto para llenar con xml. Creo que podría usar un contructor que acepte este xml para construir el objeto. Pero, ¿hay un mejor patrón de diseño para hacerlo? ¿Le corresponde al objeto manejar todo el análisis XML?Patrón de diseño para llenar un objeto con xml

¡Gracias!

Respuesta

7

No, no debería enviar el XML al constructor porque usted está acoplando el modelo con la lógica deserilizante. Debería crear una clase que maneje la deserlización para usted y devolver una instancia. Por qué esto es importante podría no estar claro. Pero imagine que en el futuro puede tener los datos procedentes de una base de datos, no quiere pasar la conexión de la base de datos al constructor, ¿verdad? En su lugar, puede crear una clase diferente que use bases de datos para generar una instancia de su clase.

Éstos son algunos buena lectura: (¿o tienen los emisores públicos)

http://en.wikipedia.org/wiki/Builder_pattern

http://en.wikipedia.org/wiki/Immutable_object

+0

Pero Si creo una clase deserializer, la mayoría de mis atributos de clase debe convertirse en público. Gracias. – poiuytrez

+0

Debería tratar de hacer que se oponga a objetos inmutables para un mejor diseño. Si tiene una gran lista de campos, entonces considere usar un patrón de generador. finalmente, si puede empaquetar cosas, tal vez piense en usar campos protegidos para que pueda configurarlos directamente. –

+0

¡Gracias! Creo que el patrón Builder es perfecto para mí. – poiuytrez

3

El enfoque más simple sería dejar que XmlSerializer lo haga por usted. Simplemente decorarlo (si es necesario) para que sepa cómo asignar el xml y llamar a Deserialize.

2

si recibe XML como una cadena que requiere análisis especial, puede, supongo, crear un gestor/fábrica para la construcción de su objeto:

  var myObject = MyObjectCustomXmlSerializer.Deserialize(xmlString); 
Cuestiones relacionadas