[Python-es] pregunta sobre OOP: ?donde poner un metodo list()?
Alberto Valverde
alberto en toscat.net
Mar Mayo 9 18:19:49 EDT 2017
2017-05-09 22:49 GMT+02:00 Jose Caballero <jcaballero.hep en gmail.com>:
> Pirmero, perdon por la ausencia de tildes.
>
>
> Imaginemos un caso cualquiera donde el programa tiene que crear,
> modificar, eliminar y listar "cosas", en algun tipo de registro (una
> BBDD, ficheros, servicio web, etc.)
> Las podemos llamar Item.
>
> Imagino que necesitaria una clase Item con los metodos para crear,
> eliminar y modificar:
>
> class Item:
> def __init__(self):
> ...
>
> def create(self):
> ...
>
> def remove(self):
> ...
>
> def update(self, data):
> ...
>
>
> Mi duda es donde habria que tener un metodo list().
> ?En una clase diferente, tipo ItemsManager o algo parecido?
>
Creo que buscas algo con pinta de contenedor, Fowler lo llama el
"repository pattern" [1]. Éste se encargaría de añadir, eliminar, listar y
probablemente buscar items. No le metas esa responsabilidad a los items en
si porque qué necesidad tienen éstos de saber donde los vas a guardar? Tal
vez incluso necesites guardarlos en sitios distintos en distintos momentos
(bdd, caché, ...)
[1] https://martinfowler.com/eaaCatalog/repository.html
> Asumiendo que la respuesta es que si...
> ?Que pasa si tengo 2 o mas objetos que gestionar: Item1, Item2, ..., ItemN?
>
Los metes en distintos contenedores (el mismo parametrizado por tipo de
ítem)
> ?Necesitaria sendas clases Item*Manager?
>
Yo lo haría así
> ?O todo en una sola, como sigue?
>
> class ItemsManager:
> def listitems1(self):
> ...
>
> def listitems2(self):
> ...
>
> def listitemsN(self):
> ...
>
?Que me recomiendan?
> Cualquier sugerencia de alguien con experiencia en OOP sera mas que
> bienvenida.
> Y links con ejemplos de buenas practicas para este tipo de problemas, mas
> aun :)
>
> Gracias,
> Jose
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170510/1fe29592/attachment.html>
Más información sobre la lista de distribución Python-es