2011-01-09 14 views
8

Para ser sincero, esta es una pregunta para la tarea, así que le diré mi opinión. ¿Me puedes decir mis errores en lugar de darme la solución?¿Qué patrón de diseño debo usar en esta pregunta?

Esta es la pregunta:

asumir un restaurante que sólo ofrece los siguientes dos tipos de comidas: (a) una comida completa y (b) una comida económica. La comida completa consta de los siguientes alimentos y se sirve en el siguiente orden: 1. Aperitivo 2. Bebida 3. Plato principal 4. Postre Mientras tanto, la comida económica consiste en los siguientes alimentos y se sirve en el siguiente orden: 1. Beba 2. plato principal

Identificar el patrón de diseño más adecuado que se puede utilizar para que un cliente pueda única orden usando uno de los dos tipos de comidas proporcionadas y que los componentes de la comida deben ser servidos en el dado orden.

Confuso entre la Fábrica y el Iterador y utilizando ambos juntos. Usando el Patrón de fábrica podemos crear las dos comidas completas y económicas y proporcionarle al usuario una clase de objeto base que decidirá sobre ella. Pero, ¿cómo podemos hacer que se imponga el orden de los elementos? Pensé en usar el iterador que iterará a través de la composición de las dos fábricas creadas, como una especie de habla.

¿Qué opinas?

+6

Creo que la bebida se debe servir primero en ambas comidas. –

+0

¡La fábrica y el sonido del iterador son buenos! No entiendo lo que quieres decir con "iterar a través del compuesto de las dos fábricas creadas". ¿Podría explicar cómo usaría el iterador para diseñar la comida completa (ignorando las fábricas y la comida económica por un segundo)? – Ishtar

+0

suponiendo que cada elemento es una clase y se le sirve al cliente por un método en esa clase, ¿cómo puedo servir "apptizer then drink, ..etc" debería usar iterator para iterar a través de esos objetos? –

Respuesta

1

La primera cosa que viene a la mente es el patrón decorador De esa manera se podría crear una base de harina y 2 comidas concreate FullMeal y EconomicMeal , entonces puede tener los componentes de la comida como decoradores y mezclar y combinar a su gusto .

+0

Pensé también en el patrón de decorador, y en una aplicación del mundo real probablemente lo usaría, pero está diseñado para agregar funciones ad-hoc, no tanto para imponer un flujo de trabajo particular/combinación de características que este problema llamadas para. – Paul

-4

Creo que la tarea no está bien formulada. Como se cita aquí, no veo el desafío.

Identificar ... patrón de diseño que se pueden utilizar para permitir que un cliente sólo a pedido utilizando uno de los dos tipos de comidas

Cuál es el problema? Simplemente presente al cliente opciones de 2 opciones ("choose meal type (1-full, 2-economy): "y listo. ¿Por qué se necesita un patrón de diseño para eso?

Los patrones de diseño son una herramienta para el programador/diseñador, no para el usuario. La pregunta (IMHO) debe ser "proponer patrones de diseño que permitan al programador ...", por ejemplo, "... combinar/modificar un tipo de comida basado en tipos de platos fijos" o algo por el estilo.

Como se ha indicado, la cuestión no define un problema de programación/diseño, o en silencio asume demasiado.

+1

Te estás perdiendo el punto. Esta tarea En otras palabras, se ha desarrollado un escenario falso para ayudar a aprender cuándo aplicar los patrones de diseño. – Finglas

+1

@Finglas: me atrevo a decir que te falta ** mi ** punto. Entiendo perfectamente que esta es una tarea, y cuál es la tarea. Estoy diciendo que ** esta ** tarea (como se cita) no define el problema de programación/diseño que debe abordarse mediante el patrón de diseño. O que es ** demasiado implícito ** – davka

+0

Suponiendo que se trata, ¿qué pasa con mi solución chicos?! –

1

es un proceso de dos pasos, que es donde creo que estás confundiendo. lo principal son buscando es el patrón usarás para seleccionar la lógica con la que un usuario pedirá su comida. Lo que esa lógica realmente hace, o en qué orden se sirve la comida no es relevante para esa pieza.

Así que tendrías una interfaz de comida base o una clase de resumen que tiene un método o métodos para hacer un pedido (no dice que los alimentos tienen que solicitarse en el orden de servirlo, tampoco ll nota). Esa clase de Comida probablemente tendrá un par de métodos, uno de los cuales incluye ServeFood() o similar. Tendrás dos clases concretas para eso (por ejemplo, FullMeal y EconomyMeal), y dado que el orden de las mismas no es importante, puedes implementar el uso de una fábrica.

Las clases concretas se encargarán de servir los alimentos en el orden correcto cuando se les solicite ServeFood().

+0

Como seguimiento, si también se supone que debes hablar sobre cómo servir la comida, entonces dentro de las clases concretas, probablemente harías un iterador. – Paul

+0

eso es exactamente lo que estaba tratando de decir, pero lo dijiste de una manera mágica ... gracias por aclarar la idea ahora :) –

+0

Si quieres una forma divertida de asimilar realmente los patrones de diseño, iyad, deberías echar un vistazo Patrones de diseño de Head First (http://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124/ref=sr_1_1?s=books&ie=UTF8&qid=1294587433&sr=1-1). Mientras que la Banda de los Cuatro es el trabajo seminal, el enfoque de Head First es * realmente * accesible y divertido para comenzar con algunos de los más comunes. – Paul