Design patterns – Factory (Fábrica)

Antes de começarmos, segue algumas pergunta/respostas:

  1. O que é padrão de projeto?
    R: http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software
  2. O que é Factory pattern (fábrica)?
    1. Explicação sobre o padrão Factory:R: http://en.wikipedia.org/wiki/Factory_method_pattern
      R: http://en.wikipedia.org/wiki/State_pattern
    2. Qual sua categoria?R: Criacional
    3. Sua estrutura padrão:Estrutura Básica

Bom, explicações dadas, agora vamos começar a brincar com nossopadrão. O exemplo usado foi de uma fábrica celular.

Com base na estrutura básica do padrão fábrica, criei as seguintes classes:

//Produto
    abstract class Celular
    {
protected string numero;
public Celular(string numero) { this.numero = numero; }
public abstract void Ligar(string numero);
   }

//Produto concreto.

class IPhone : Celular
{
public Hashtable Agenda = new Hashtable();
public IPhone(string numero) : base(numero) { }
public override void Ligar(string numero)
{
Console.WriteLine(“({0} ligando para {1}.”,this.numero,numero);
Agenda[numero] = ( Agenda[numero] == null)? 0 : Convert.ToInt32( Agenda[numero])+1;
}
}
class Nokia : Celular
{
public Nokia(string numero) : base(numero) { }
   public override void Ligar(string numero)
{
Console.WriteLine(“({0} ligando >>> {1}…”, this.numero, numero);
}
}

//Criador

abstract class Factory
{
private Celular celular;
public abstract void Criar( string numero);
public Celular Celular
{
get {   return celular;  }
set  { celular = value;  }
}
}

//Fábrica

class IPhoneFactory : Factory
{
public override void Criar(string numero)
{
this.Celular = new IPhone(numero);
}
}
class NokiaFactory : Factory
{
public override void Criar( string numero)
{
this.Celular = new Nokia(numero);
}
}

O Diagrama dessa implementação ficará assim:


Sua chamada ficará assim:

Anúncios

Systems Analyst / .Net Developer

Marcado com: , , , , , ,
Publicado em Artigos
4 comentários em “Design patterns – Factory (Fábrica)
  1. matheus disse:

    opa blz ae mano me add no msn ae neo_matheus@hotmail.com
    que fala com oce

  2. bruce disse:

    Busco um programador para confeccionar um sistema WEB integrado com meios de pagamentos e telefonia voz sobre IP.
    Em anexo envio o que pretendo . Por gentileza, analise, verifique se esta em sua competencia tecnica a construção do mesmo e se, positivo, me envie uma proposta orçamentária. Estarei a sua disposição para sanar eventuais duvidas.
    att
    Nelson Bruce
    11-8109-8241
    i.d 55*126*28071

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: