/* * 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(); }