🖥️
Padrões de Projeto
  • Padrões de Projeto
  • Orientação a Objetos
    • Conceitos básicos de orientação a objetos
      • Objetos e classes
      • Encapsulamento
      • Relacionamentos
      • Herança
      • Realização
      • Polimorfismo
      • Imutabilidade
  • Princípios SOLID
    • Introdução
    • SRP - Princípio de Responsabilidade Única
    • OCP - Princípio de Aberto/Fechado
    • LSP - Princípio de Substituição de Liskov
    • ISP - Princípio de Segregação de Interfaces
    • DIP - Princípio de Inversão de Dependência
  • Padrões de Projetos e catálogos
    • Introdução
  • Padrões Comportamentais
    • Padrão Strategy
    • Padrão State
    • Padrão Observer
    • Padrão Chain of Responsibility
    • Padrão Command
    • Padrão Template Method
    • Padrão Null Object
  • Padrões Criacionais
    • Padrão Singleton
    • Padrão Prototype
    • Padrão Builder
    • Padrões Factory
      • Factory Method
      • Abstract Factory
  • Padrões Estruturais
  • Padrão Adapter
  • Padrão Facade
  • Padrão Decorator
  • Padrão Proxy
  • Padrão Bridge
  • Padrão Composite
Powered by GitBook
On this page

Was this helpful?

  1. Padrões Criacionais
  2. Padrões Factory

Factory Method

O Factory Method é um padrão criacional de projeto que fornece uma interface para criar objetos em uma superclasse, mas permite que as subclasses alterem o tipo de objetos que serão criados.

O exemplo de código desse padrão é exatamente o que o seu nome sugere: um método fábrica, ou seja, que cria um objeto. Imagine uma classe abstrata Dialogo que será estendida para criar janelas de diálogo para diferentes tipos de sistema operacionais (Windows, Linux e Mac).

public abstract class Dialogo {
    public abstract Botao criarBotao();
}

Essa classe declara que cria um botão no seu método criarBotao, mas deixa que suas classes concretas decidam qual instância de Botao criar, podendo ser BotaoWindows ou BotaoLinux, por exemplo.

Isso caracteriza um Factory Method.

PreviousPadrões FactoryNextAbstract Factory

Last updated 4 years ago

Was this helpful?