Jorge Marquez Jose Gomez

Tag: Deseño

MVC Arquitectura

por en Nov.17, 2011, baixo Xeral

Deixo-vos que fixen unha presentación sobre arquitectura MVC é unha explicación moi conceptual e por riba, pero o suficiente na miña opinión
debe ser entendido que a arquitectura.
Divirtam-se!

MVC Arquitectura

más... Deixe un comentario : , , , , , máis ...

Fábrica de modelos (de fábrica)

por para ago.27, 2010, baixo DoNet

Un nivel de fábrica serve para canalizar todas as creacións de obxectos nun único punto. Isto é útil para deseño robusto do noso sistema e receptivo a cambios.

O nivel de fábrica pode combinarse co estándar Singleton, pois é máis cómodo de usar e de forma útil para usar. Neste exemplo, imos poñer unha fábrica sen Singleton.

Dicir que o nivel de fábrica é un dos patróns de creación, este tipo de estándar que abstrai o xeito de crear obxectos concretos, dando así soporte para crear obxectos no abstracto.

Para ter un nivel de fábrica é a realización de:
- A función ou método que é responsable da creación de obxectos dun determinado tipo.
- Non é obrigatorio, pero é recomendable que a función ou método retorna unha abstracción (interface ou clase abstracta).

Imaxina unha tenda de pizza require un software ten que ter un número de produtos (pizzas variadas). Como deseñadores que somos bos, a creación do obxecto de pizza pódese facer dende calquera lugar do proxecto, pero o problema é que hai moitos tipos de pizzas. Para crear cada pizza para cada tipo en distintas partes do programa sería o primeiro que podería pensar, pero ... en cambio, usa o sentido común e aplicar a fábrica?, Isto permite-nos como un novo produto ou modificación en calquera deles que o cambio en só un lugar, máis controlada este código. Mesmo se percibir a velocidade do cambio é moito máis que ir cambiando todas as aparencias posibles das nosas pizzas polo código.
Así, a fábrica sería responsable de crear todo tipo de pizzas e ofrecer todos os puntos posibles do programa.

O noso exemplo sería:

- O IPizza interface:

     IPizza interface de
     {
         WhoAmI void ();
     }

- As pizzas individuais:

     public class PizzaBarbacoa: IPizza
     {
         # Membros Rexión IPizza

         public void WhoAmI ()
         {
             Console.WriteLine ("Eu son unha pizza churrasco");
         }

         # Endregion
     }
     public class PizzaMargarita: IPizza
     {
         # Membros Rexión IPizza

         public void WhoAmI ()
         {
             Console.WriteLine ("Eu son un Margarita pizza");
         }

         # Endregion
     }
     public class PizzaPepperoni: IPizza
     {
         # Membros Rexión IPizza

         public void WhoAmI ()
         {
             Console.WriteLine ("Eu son un Pepperoni pizza");
         }

         # Endregion
     }

- A planta en cuestión:

     public class PizzaFactory
     {
         public enum tipoPizza
         {
             Pepperoni, Margherita, Barbeque
         }

         IPizza público getPizza (tipo tipoPizza)
         {
             rede (tipo)
             {
                 caso tipoPizza.Barbacoa:
                     return new PizzaBarbacoa ();
                     romper;
                 caso tipoPizza.Margarita:
                     return new PizzaMargarita ();
                     romper;
                 caso tipoPizza.Pepperoni:
                     return new PizzaPepperoni ();
                     romper;
                 default:
                     return new PizzaBarbacoa ();
             }
         }
     }

- Un pequeno test:

     public class Test
     {
         public void testPizza ()
         {
             / Non / Exemplo usando fábrica
             IPizza pizza1 = new PizzaBarbacoa ();
             pizza1.quienSoy ();
             IPizza pizza2 = new PizzaMargarita ();
             pizza2.quienSoy ();
             IPizza pizza3 = new PizzaPepperoni ();
             pizza3.quienSoy ();
             IPizza pizza4 = new PizzaBarbacoa ();
             pizza4.quienSoy ();
             IPizza pizza5 = new PizzaMargarita ();
             pizza5.quienSoy ();

             / / Exemplo usando fábrica
             PizzaFactory PizzaFactory fábrica = new ();
             IPizza pizza6 = factory.getPizza (PizzaFactory.tipoPizza.Barbacoa);
             pizza6.quienSoy ();
             IPizza pizza7 = factory.getPizza (PizzaFactory.tipoPizza.Margarita);
             pizza7.quienSoy ();
             IPizza pizza8 = factory.getPizza (PizzaFactory.tipoPizza.Pepperoni);
             pizza8.quienSoy ();
         }
     }

Como podes ver como usar e as súas vantaxes son mellores. Espero que vós gusten!. Te vexo máis tarde!

más... Deixe un comentario : , , , máis ...

Únicos patróns de deseño (Singleton) e decorado (Abstract ou Decorator). Net

por para nov.24, 2009, baixo DoNet

Ben, despois da miña letargo (non me arrepinto mensaxe anterior, pero a universidade eu tenia ten resaltado), vou falar sobre algúns patróns de deseño. Net.

Pero, primeiro, unha "historia" pouco:

Patróns de deseño son usados ​​para moitas cousas, (retirado do wikipedia):
* Subministración de catálogos de elementos reutilizables no proxecto de sistemas de software.
* Para evitar a repetición na busca de solucións a problemas coñecidos e resoltos antes.
* Formalizar un vocabulario común entre os deseñadores.
* O modo estandarizar se realiza deseño.
* Facilitar a aprendizaxe de novas xeracións de deseñadores de condensación do coñecemento existente.

E como dicimos na wikipedia non pretende impor nada e abusar delas pode ser un erro.

Ben, imos ver algúns patróns. Net.

Patrón Singular (Singleton):
Este patrón asegura que hai só unha instancia por clase evitando o consumo excesivo de recursos ou de acceso inconsistente. Seus usos poden ser varios, incluíndo o acceso ás opcións globais, rexistro, etc ..
O esquema xeral é:

  PatronSingular Public Class
  Private Shared Como instanciaUnica PatronSingular

  Private Sub New ()
  'Constructor privado para crear clase da instancia
  End Sub

  Public Función Shared getInstance () As PatronSingular
  "Controlar a creación de obxectos a partir da propia clase.
  Entón non é nada se instanciaUnica
  Nova PatronSingular instanciaUnica = ()
  End If
  Volver instanciaUnica
  End Función
 End Class 

Un estándar Singleton seu constructor debe ser privado á clase é para controlar a súa propia creación e é responsable por ela. Temos que crear un método, que é normalmente chamado "getInstance ()" que retorna esta instancia de clase para usar.

Estándar Decorator (Decorador):
Fai "wrapper" obxectos, nunha definición formal do que fai é establecer unha función a obxectos que herdan del e, polo tanto, recoñecer a responsabilidade. En suma, nos dá a capacidade para xerar clases con funcións que se xeran dinámicamente. Hai moitos exemplos deste tipo. Net, incluíndo a xestión de arquivos (FileStream seu decorado é Stream). Comparado co Java, que correspondería a clases abstractas. Exemplo:

  Public class MustInherit PatronDecorador
  "El ofrece unha funcionalidade básica para todos os nenos, pero
  "Isto funciona de forma distinta:
  "Por exemplo:
  'Chocolate terá prezo diferente e descrición
  "Manteiga, pero ambos poden derreter!.
  Prezo MustOverride Public Función () As Double
  Descrición da Función Pública MustOverride () As Double

  Melt Función Pública () As Boolean
  "Derreter
  Voltar True
  End Función

  "Ela obriga os fillos a ser instanciado dun xeito particular
  Public Sub New (ByVal ModificadorAcceso As String)
  End Sub
 End Class

 Chocolate Public Class
  Herda PatronDecorador

  Descrición da Función Pública substitucións () As Double
  Return "Chocolate"
  End Función

  Prezo Función Pública substitucións () As Double
  10,2 Retorno
  End Función

  Public Sub New (ByVal As cadea paran)
  MyBase.New (paran)
  End Sub
 End Class

 Manteiga Public Class
  Herda PatronDecorador

  Descrición da Función Pública substitucións () As Double
  Return "Manteiga"
  End Función

  Prezo Función Pública substitucións () As Double
  3,6 retorno
  End Función

  Public Sub New (ByVal As cadea paran)
  MyBase.New (paran)
  End Sub
 End Class 

Ben, espero escribir con máis frecuencia, pero o tempo me afogou!, Noutro artigo, vou describir o nivel de estratexia, adaptadores e observadores. Saúdos!

más... 1 Comentario : , , , , máis ...

Buscando por algo?

Use o seguinte formulario para buscar no sitio web:

Non atopou o que estás buscando? Deixe un comentario ou póñase en contacto connosco para coidar.

Visita os nosos amigos!

Algúns sitios recomendados episodio

Arquivo

Todas as entradas, en orde cronolóxica episodio