Tag: Deseño
MVC Arquitectura
por Jose Jorge Marquez Gomez 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!
Fábrica de modelos (de fábrica)
por Jose Jorge Marquez Gomez 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!
Únicos patróns de deseño (Singleton) e decorado (Abstract ou Decorator). Net
por Jose Jorge Marquez Gomez 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!






