Pregunta

Tengo algunas instancias de objeto de medición a partir de una serie de ejecuciones de prueba almacenados en un objeto de colección de prueba. También tengo algo de lógica que se pueda comparar dos instancias de objeto resultado de la prueba y dime si son "lo suficientemente cerca".

¿Dónde se debe colocar esta lógica?

  1. En el objeto como un método? Al igual que: instance.approximately_equal(other)
  2. En la clase del objeto como un método de clase / estática? class.approximately_equal(a,b)
  3. En el objeto de colección como un método? collection.approximately_equal(a,b)

¿Cuál es el diseño orientado a objetos correcta para esto?

(te pido, ya que si bien # 1 parecería la solución correcta, no me preguntaría si alguien instancia es approximately_equal a una instancia diferente. Sólo si "algún grupo de objetos" son iguales entre sí. Se puso me hizo pensar ...)

Gracias

¿Fue útil?

Solución

Los orientados a objetos libros de diseño que he leído sugieren poner funcionalidad interclasista en objetos de proveedores de servicios. Esto desacoplar los dos objetos y reducir la complejidad, pero puede ser excesivo si su proyecto es pequeño.

Otros consejos

Yo usaría la opción 1 (método de instancia), ya que le permite refinar la lógica de comparación en las clases derivadas (si es necesario).

he encontrado # 3 es la menos molesta y da lugar a código sea menos hinchado, ya que tiende a obligar a hacer esos métodos como flexibles / reutilizable como sea posible. Por ejemplo, en C ++, usted sólo tiene que utilizar potencialmente sobrecarga de operadores para manejarlo; si usted tiene una clase de utilidad (o, si usted planea en la ampliación de un tipo de datos nativo), el efecto neto es el mismo, sólo que con una presentación diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top