Tag: NET.
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 {# region membros public void IPizza 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!
Log4Net para C #
por Jose Jorge Marquez Gomez para ago.25, 2010, baixo DoNet
Ben, hoxe eu vou che dicir algo como configurar log4net para C #. Pero antes de lle dicir que é log4net.
Log4Net é un cadro log4java portado a biblioteca, que ofrece todas as ferramentas posibles para facer un rexistro, tratamento de erros, que vixían os seus aplicativos para posibles aplicacións. Na miña opinión, o rexistro é tan bo que eu tente ata agora e é moi fácil de configurar. Ofrece varios modos de seguimento, e mesmo crear-lle o seu propio. Isto libraría pode obter http://logging.apache.org/log4net/index.html .
Explicar algúns conceptos relacionados coa log4net.
Log4Net ofrece varios niveis de seguimento pre-definida como:
1. Depuración: Isto xeralmente se usa para liñas de depuración.
2. Info: El é frecuentemente usado para dar información relativa á súa aplicación.
3. Avisar: puntos de interrupción son posibles do seu software, quero dicir, todos os avisos importantes.
4. Erro: Usado para detectar erros no seu programa.
5. Fatal é usado para detectar erros significativos no programa, é dicir, para evitar o seu funcionamento, por exemplo.
Estes niveis son predefinidos trae log4net, pero pode crear niveis personalizados.
Outro destaque é o appenders, este é o quão diferentes niveis de log4net será monitor / logueado log4net alí estes inclúen:
1. FileAppender: rexistros no nivel se define no arquivo de configuración.
2. RollingFileAppender: rexistros sobre o nivel definido na configuración nun ficheiro que xira en función do seu peso.
3. SmtpAppender: rexistros sobre o nivel definido na configuración e é enviado a un destinatario de correo electrónico.
Máis tarde vai ver un exemplo da fixación destes niveis configurados. Para máis información de todas as propiedades que se pode ver os appenders web ten a continuación.
Todo o que podes ver detallado na web http://logging.apache.org/log4net/release/config-examples.html .
Begin.
O primeiro paso é descargaros biblioteca do web anterior, unha vez descargado, ten que engadir esta biblioteca para as súas referencias de proxecto. Entón imos establecer os log4net no ficheiro de configuración da súa aplicación, se unha aplicación web é o web.config, se a aplicación de consola app.config, etc ...
Na etiqueta "configuración" -> "configSection" -> agregad a seguinte liña:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/> A continuación, unha nova marca que chamamos "<log4net>" os appenders son configurados alí. Cada un ten as súas propias opcións na web anterior pode ver todo. Vice- log4net Exemplo
Así que temos isto, xa usa nosos log4net na súa aplicación. Un requisito a cumprir é que cada clase debe arrincar log4net no seu constructor de xeito que é como ilustrado no seguinte código:
clase de proba { Ilog rexistro privado; pública de proba () { log4net.Config.XmlConfigurator.Configure (); log = LogManager.GetLogger (this.GetType ()) / / Aquí proceder a iniciar o obxecto de rexistro. }
Para facer uso do noso rexistro é sinxelo, basta con conectar para os distintos niveis de alerta que ten por obxecto o rexistro.
Espero que sirva como unha semente con log4net.
Saúdos!






