Beispiel #1
0
        /*
         *  FACTORY METHOD
         *  - Intenção: definir uma interface para criar um objeto, mas deixar as subclasses decidirem
         *              que classe instanciar.
         *  - Criar uma instância de várias classes derivadas.
         *  - Boa extensibilidade
         *  VANTAGENS: Permite a criação de produtos sem saber os detalhes ou dependencias entre produtos, precisa somente passar os dados para crialos.
         */

        static void Main(string[] args)
        {
            // Empresas de ônibus
            Empresa viacaoABCLocal = new EmpresaOnibusUrbano();
            Empresa viacaoXYZInter = new EmpresaOnibusInterEstadual();

            // Emite passagens
            Passagem passagemLocal = viacaoABCLocal.emitePassagem("São Paulo", "Campinas", new DateTime(2020, 01, 10, 10, 20, 00));
            Passagem passagemInter = viacaoXYZInter.emitePassagem("São Paulo", "Rio de Janeiro", new DateTime(2020, 03, 25, 15, 30, 00));


            // Exibe detalhe das passagens
            Console.WriteLine(passagemLocal.exibeDetalhe());
            Console.WriteLine(passagemInter.exibeDetalhe());
        }
        static void Main(string[] args)
        {
            //Empresas de ônibus
            Empresa vicaoABC       = new EmpresaOnibusUrbano();
            Empresa viacaoXYZInter = new EmpresaOnibusInterestadual();

            //Emite Passagens
            Passagem pUrbano        = vicaoABC.EmitePassagem("SP", "BH", DateTime.Now);
            Passagem pInterestadual = viacaoXYZInter.EmitePassagem("BH", "PT", DateTime.Now.AddDays(5));

            //Exibe detalhe passagens
            pUrbano.ExibirDetalhes();
            pInterestadual.ExibirDetalhes();
            Console.ReadKey();
        }