• Viernes 8 de Noviembre de 2024, 09:45

Autor Tema:  Patrones de diseño en java  (Leído 2631 veces)

luisianoXVI

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Patrones de diseño en java
« en: Viernes 15 de Mayo de 2009, 10:29 »
0
Hola, tengo que hacer un sistema en java utilizando patrones de diseño, y no se identificar la mayoria, me podriais decir cuales utilizar?? Os doy el enunciado:

Una empresa "puntocom" necesita una aplicación para gestionar una página web con un sistema
de subastas por internet. La empresa presentará dos tipos de productos en la web: los de venta
inmediata y los de subasta. Los productos de venta inmediata son ofertas que hace la empresa
donde el precio de venta al público es fijo. Los productos de subasta tienen un precio de salida.
Los distintos posibles compradores hacen su oferta para ese producto y al terminar el tiempo de
subasta se determina el precio final del producto. Cada producto, independientemente de si es
de venta inmediata o de subasta, tiene una descripción del mismo. No se descarta que en un
futuro se puedan añadir más características a los productos.
Se pide construir un sistema que implemente los requisitos que se describen más adelante, pero
de forma suficientemente reutilizable como para albergar en un futuro otros requisitos, de forma
que la ampliación suponga la menor cantidad posible de cambios en el sistema original. Para
ello, se necesita identificar los patrones de diseño necesarios y adaptarlos al problema actual.

----------------------------PATRONES-------------------------------------------------------------

Requisito 1

Los productos se identifican con un código en el formato AA-NNNNNN, donde AA es un código
que identifica si el producto es de subasta o de venta directa, y NNNNNN es un número
asignado secuencialmente. Por ejemplo, el producto PS-123456 es un producto para subasta
(PS) cuyo número de secuencia es 123456. Sin embargo, no se descarta que el formato de
identificación de los productos cambie en un futuro para, por ejemplo, introducir el año y el mes
en el que aparece un producto. Este cambio no debería afectar en gran medida al diseño e
implementación de la aplicación.
Los códigos son únicos, aunque la implementación de esta característica queda fuera del
alcance de la aplicación solicitada.

Requisito 2

La forma de organizar los productos en la web es por categoría. Las categorías pueden a su vez
contener otras categorías. Por ejemplo, en la categoría ``Antigüedades'' existen las categorías
``Muebles'', ``Libros'', ''Mapas'', etc. Estas categorías podrán crearse de manera dinámica.

Requisito 3

La forma de manejar el sistema de subastas es la siguiente:
Los usuarios conocen el precio de salida de un producto. A partir de ese precio, cada
usuario puede mostrar su interés en ese producto haciendo una puja.
Cada vez que un usuario hace una nueva puja sobre un determinado producto, se
comunica al resto de usuarios interesados en el producto el valor con el que ha pujado.
Al terminar el tiempo de subasta, el usuario con el valor de puja más alto es el que se
lleva el producto.
Universidad Carlos III de Madrid Técnicas de Desarrollo de Programas
4 de 7
Requisito 4
Las tareas que podemos llevar a cabo en nuestra aplicación de gestión son:
NEW XXX: Crear un producto o una categoría asignándole los atributos que lo
caracterizan y el sitio dónde debería crearse (categoría o root).
SELL: Sacar a la venta inmediata un producto de venta inmediata.
AUCTION: Sacar a subasta un producto de subasta.
BID: Pujar para un determinado producto.
ENDAUCTION: Simula el fin del tiempo de subasta para un determinado producto.
SET XXX: Modificar los datos de un producto. A través de la segunda palabra del
comando (XXX), debe ser posible modificar la clasificación de un producto, así como
cualquier dato de los que los caracterizan, incluyendo su precio (SET PRICE), su
descripción (SET DESC), etc., entre otros.
GET XXX: Consultar los datos de un producto, con el mismo formato y capacidades que la
opción SET.

Gracias
Un Saludo!

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Patrones de diseño en java
« Respuesta #1 en: Lunes 18 de Mayo de 2009, 09:39 »
0
Hola luisianoXVI.

Para este ejercicio en particular, y para muchos otros de este estilo, sobre todo si eres nuevo en el tema de patrones, te aconsejo encarecidamente que te consigas el libro de O'reilly Head First Design Patterns. Aquí vienen unos cuantos patrones, perfectamente identificados y con ejemplos perfectos de uso e identificación.

Aunque yo tengo el libro impreso, he estado mirando y es posible conseguirlo en formato electrónico sin ningún problema.

Adicionalmente, te contaré que, dependiendo del libro en el que mires, tu problema se resuelve de distinta manera, ya que no hay una forma perfectamente correcta y única de aplicar los patrones, sino que cada uno se centrará en mejorar un aspecto determinado.

Como ejemplo, yo aplicaría un interface para el requisito 1, por el principio de bajo acoplamiento / Patrón Bridge.
Para los tipos de producto (venta inmediata, subasta, etc) crearía un patrón Decorator, que iría bastante de la mano con un patrón Factory.
Las categorías y subcatecogorías, Factory (quizá algo más, dependiendo más específicamente de las diferencias entre categorías y las particularidades de las subcategorías.
En cuanto a las pujas, el método normal es el del patrón Publicador/Subscriptor (Publisher/Subscriptor).

Y bastantes más patrones que se pueden aplicar en cada parte. Recuerda que en diseño puedes hilar tan fino como quieras/puedas/te permitan.
Todos los patrones que te comento vienen en el Head First, por si quieres echarles un vistazo.

Por cierto, que yo me compré el libro en Madrid, en cocodrilolibros.com (hay tienda en Madrid) seguro que lo tienen o te lo pueden encargar (lo malo es el precio... :S )


Un saludo y suerte con los ejercicios.


Silverfox

luisianoXVI

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Patrones de diseño en java
« Respuesta #2 en: Lunes 18 de Mayo de 2009, 12:10 »
0
perfecta respuesta!!

muchas graciass por todos los consejos!!