sábado, 29 de setembro de 2012

Roteiro do exercício da aula de Edeyson

Definindo:

Classe Mãe:  
            Pizza
Classes Filhas:
            PizzaDiet
            PizzaNormal
Classes de composição (eu que dei esse nome):
            Massa
            Recheio
Interfaces:
            IMassa
            IRecheio
Fabricante:
            Fabrica
            FabricaPizzaDiet
            FabricaPizzaNormal


      Na construção sem factory
  1. Acoplado
    • Classes de composição: construtor, gettings e settings
    • Classe mãe: construtor, gettings e settings
    • Construtor sem parâmetros e  inicializa os atributos com new (composição)
    • O Teste: instancia a classe mãe.
  1. Desacoplado
    • Classes de composição:  construtor, gettings e settings
    • Classe mãe: construtor, gettings e settings, construtor recebe parâmetros e inicializa os atributos com os parâmetros (agregação simples)
    • Classe Teste: instancia as classes de composição e também a classe mãe, passando as classes de composição como parâmetros para a criação da classe mae. 
     Com Factory Method
  1. Factory Method
    • Cria-se um pacote para interfaces
    • Para cada classe de composição, cria-se uma interface
    • Cria-se pacotes para cada agrupamento de classes de composição
    • Cada classe de composição implementa a sua própria interface
    • As classes de composição são concretas e possuem seus próprios construtores
    • A classe mãe passa a ser abstrata
    • Os atributos da classe mãe que é do tipo da classe de composição, passa a ser do tipo Interface
    • No construtor da classe mae,  os atributos do tipo Interface recebem os métodos de criacao (factoryMethod): atributo = criaClasse()
    • Na classe mãe, também são definidos os métodos de criação
    • Esses métodos de criação são abstratas e retornam uma Inteface
    • A implementação dos métodos de criação só ocorre nas classes filhas
    • Na classe teste é criado um objeto do tipo da classe mãe e então pode-se instanciar qualquer classe filha.
  1. Abstract Factory
    • Cria-se uma classe abstrata fabricante que vai conter os a definição dos métodos de criação (abstratos) que estavam na classe mãe
    • As classes filhas agora serão filhas do fabricante e será acrescentado o singleton em cada uma delas. Não esquecer que o método de criação é publico e static e o construtor privado
    • A classe mãe passa a ser concreta (não abstrata)
    • O construtor da classe mãe receberá como parâmetro uma fabrica e atribuição dos valores do atributos serão dos métodos de criação dessa fabrica. Ex: (this.massa = fabrica.criaMassa(100))
    • Na classe teste será criado um objeto do tipo fabrica instanciando a fabrica filha e este será  parâmetro para a criação da classe mãe.

Um comentário: