Tengo dos clases, A y B. B sabe acerca de A, y A no sabe acerca de B. B tiene propiedades que se pueden configurar muy bien desde A, aunque no hay herencia compartida entre A y B. Habrá muchas veces cuando necesito asignar propiedades de B desde una A, pero estoy buscando punteros sobre dónde debería poner ese código.Convenciones en el código de asignación?
public class A
{
}
public class B
{
//constructor?
public B(A a)
{
//set b's properties from a
}
//factory method?
public static B FromA(A a)
{
B b = new B();
//set b's properties from a
return b;
}
//setter method?
public static void SetBFromA(B b, A a)
{
//set b's properties from a
}
//assignment method?
public void AssignFrom(A a)
{
//set b's properties from a
}
}
//static helper class?
public static class BHelper
{
public static B GetBFromA(A a)
{
B b = new B();
//set b's properties from a
return b;
}
public static void SetBFromA(B b, A a)
{
//set b's properties from a
}
}
¿Cuál de estas, si las hay, son una práctica común? ¿Alguno de ellos tiene implicaciones basadas en su firma? Por ejemplo, ¿usaría el constructor para transmitir que el B está reteniendo una referencia al A pasado? Estas son las clases de consideraciones en las que estoy pensando.
Gracias!
Excelente respuesta. Me gustan los comentarios sobre cada una de las sugerencias que surgieron, así como las excelentes reglas generales para cada una. Esto es exactamente lo que esperaba obtener. ¡Gracias! – bwerks
* rubor * - gracias. –