none
Patron Factory RRS feed

  • Pregunta

  • Buenas, tengo una pregunta... estoy aprendiendo a realizar lo que seria un sistema implementando el patron factory y singleton, pero hay algo que por momentos entiendo y por otros no jeje, es que al momento de tener una fabrica en por ejemplo la logica de negocio que es un componente que nos brinda servicios, tengo por ejemplo FabricaLogica que contiene lo que seria el fabricar objetos de LogicaArticulos, al momento de implementarlo yo lo que realizo es un

    public static ILogicaArticulo getLogicaArticulo()

    {

    return (LogicaArticulo.getInstancia());

    }

    Por lo tanto va a ser Logica Articulo ella misma quien va a crear sus propios objetos y va a devolverselos a la fabrica. Ahora, mi duda es porque el usar un metodo que devuelva un ILogicaArticulo (Interfaz de LogicaArticulo), entiendo que LogicaArticulo lo hereda por lo tanto LogicaArticulo seria x asi decir un tipo de ILogicaArticulo, pero mi pensamiento es como si dijera un UsuarioCajero en la logica no voy a tener una logicaCajero, tendré una logicaUsuario que abarque a todos, y en un alta lo que hago es preguntar de que tipo es el usuario por ejemplo. Es el mismo razonamiento para lo que serian las interfaces? o tiene otra explicacion? estoy mareado, puede sonar tonto y hasta que me respondo a mi mismo, pero necesito alguien que me diga cuantos pares son 3 botas. 

    gracias y slds

    miércoles, 25 de abril de 2018 16:33

Respuestas

  • hola

    >>no entendi bien lo de la librería IoC

    se refiere a librerias que inyecten dependencias, cuando en una clase inyectas la instancia de un serviciopor medio de la interfaz

    >>el cual lo que hace es devolver una instancia utilizando un constructor privado para lograr el cometido de tener un solo objeto de la misma.

    lo del constructor privado es correcto, ahora que sea otra clase es opcional, podri ser la misma clase quien se implementa a si misma como singleton

    si se usa un medio externo cuando aplicas lo que comente de Dependency Injection ya que al registrar la interfaz a la instancia le puedes indicar si es singleton

    >>la fabrica en ese sentido si seria un pasamano, pero no se si eso es bueno o malo ya que asi es como me lo enseñaron jeje. Tu que dices?

    si es el factory quien tiene la responsabilidad de definir que esa clase es singleton entonces no es pasamano ya que define comportamiento

    >>crees que es algo que se puede llegar a usar asi?

    head first design patterns

    estudiate ese libro, es genial

    los ejemplos estan en java pero se entienden perfecto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta mathiiuy jueves, 26 de abril de 2018 21:57
    jueves, 26 de abril de 2018 19:29

Todas las respuestas

  • hola

    Si vas a usar estos patrones deberias evaluar unirlo a una libreria de IoC como ser Unity, Ninject, etc, con estas podrias inyectar la instancia singleton o por request

    >>al momento de implementarlo yo lo que realizo es un

    pero en que contexto esta este getLogicaArticulo() ? porque no entiendo donde lo defines o como lo usas

    >>ella misma quien va a crear sus propios objetos y va a devolverselos a la fabrica.

    pero entonces para que esta la fabrica ? seria solo un pasamano

    >>entiendo que LogicaArticulo lo hereda por lo tanto LogicaArticulo seria x asi decir un tipo de ILogicaArticulo

    si es una itnerfaz no se hereda, se implementa, no hay herencia en las interfaces

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 25 de abril de 2018 20:50
  • Hola, tratando de entender la respuesta, ya que soy nuevo en esto... Yo empecé hace unos dias a estudiar los patrones de diseño tratando de implementarlos en c# asp.net que es lo que vengo dando hace un año, no entendi bien lo de la librería IoC. Yo vengo utilizando el modelo de 3 capas en los proyectos que realizo, y ahora que empezamos a ver el tema de singleton y factory que nos lo enseñan juntos porque se complementan muy bien nos dijeron que para cuando queremos crear una sola instancia de una clase, el singleton tiene que ir dentro de la clase en la cual se va a instanciar un objeto. Por lo tanto ya no creamos el objeto dentro de la fabrica, sino que llamamos a una funcion que nos devuelve una instancia de la clase que queremos, el cual lo que hace es devolver una instancia utilizando un constructor privado para lograr el cometido de tener un solo objeto de la misma. Por eso mismo llamo a ese metodo desde factory, que seria getInstancia(). Ahora que lo veo, la fabrica en ese sentido si seria un pasamano, pero no se si eso es bueno o malo ya que asi es como me lo enseñaron jeje. Tu que dices? me recomiendas mirar algun tutorial para entenderlo mejor? o crees que es algo que se puede llegar a usar asi? 

    Lo de la interfaz, ya se que se implementa, solo que me explique mal por lo que veo... mi duda era la siguiente... Porque en la fabrica cuando quiero devolver un objeto de una clase, creo la funcion de tipo InterfazClase de la clase que quiero devolver? 

    para que se entienda mejor, voy a hacer un copy-past jeje... asi estoy dandolo yo

     internal class LogicaArticulo: ILogicaArticulo
        {
            //singleton 

            private static LogicaArticulo __instancia = null;
            private LogicaArticulo(){}

            public static LogicaArticulo GetInstancia()
            {
                if (__instancia == null)
                    __instancia = new LogicaArticulo();
                return __instancia;    
            }

    //aqui abajo van a ir las operaciones..

    }

    despues... en la fabrica creo ...

     public class FabricaLogica
        {
            public static ILogicaArticulo getLogicaArticulo()
            {
                return (LogicaArticulo.GetInstancia());
            }
        }

    Obviamente tengo la Interfaz...

    public interface ILogicaArticulo
        {
            void AgregarArticulo(Articulo A);
            void EliminarArticulo(Articulo A);
            void ModificarArticulo(Articulo A);
            Articulo BuscarArticulo(int pCodigo);
            List<Articulo> ListarArticulo();
        }

    Capaz se entiende mejor lo que quiero preguntar, no soy bueno a veces para formular preguntas jeje. Muchas gracias x tu tiempo Leandro.

    jueves, 26 de abril de 2018 16:23
  • hola

    >>no entendi bien lo de la librería IoC

    se refiere a librerias que inyecten dependencias, cuando en una clase inyectas la instancia de un serviciopor medio de la interfaz

    >>el cual lo que hace es devolver una instancia utilizando un constructor privado para lograr el cometido de tener un solo objeto de la misma.

    lo del constructor privado es correcto, ahora que sea otra clase es opcional, podri ser la misma clase quien se implementa a si misma como singleton

    si se usa un medio externo cuando aplicas lo que comente de Dependency Injection ya que al registrar la interfaz a la instancia le puedes indicar si es singleton

    >>la fabrica en ese sentido si seria un pasamano, pero no se si eso es bueno o malo ya que asi es como me lo enseñaron jeje. Tu que dices?

    si es el factory quien tiene la responsabilidad de definir que esa clase es singleton entonces no es pasamano ya que define comportamiento

    >>crees que es algo que se puede llegar a usar asi?

    head first design patterns

    estudiate ese libro, es genial

    los ejemplos estan en java pero se entienden perfecto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta mathiiuy jueves, 26 de abril de 2018 21:57
    jueves, 26 de abril de 2018 19:29
  • muchas gracias Leandro!
    jueves, 26 de abril de 2018 21:57