<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diário de Códigos &#187; Design Pattern</title>
	<atom:link href="http://diariodecodigos.info/category/tecnicas-de-programacao/design-pattern/feed/" rel="self" type="application/rss+xml" />
	<link>http://diariodecodigos.info</link>
	<description>Codigos Fonte, Artigos e Dicas</description>
	<lastBuildDate>Wed, 11 Apr 2012 18:56:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Patterns: Flyweight</title>
		<link>http://diariodecodigos.info/2009/07/patterns-flyweight/</link>
		<comments>http://diariodecodigos.info/2009/07/patterns-flyweight/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 19:08:42 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[flyweight]]></category>
		<category><![CDATA[patterns]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=208</guid>
		<description><![CDATA[Em foco hoje o padrão Flyweight: Classificação segundo GoF: Estrutural de Objeto Propósito: Usa compartilhamento para dar suporte a grandes quantidades de objetos, de granularidade fina, eficientemente. Para evitar o overhead associado com o uso de milhares de instâncias, queremos criar um pool de instâncias reutilizávuma nova instância tivesse sido criada para cada uso. Sabe]]></description>
			<content:encoded><![CDATA[<p>Em foco hoje o padrão Flyweight:</p>
<p>Classificação segundo GoF:<br />
Estrutural de Objeto</p>
<p>Propósito:<br />
Usa compartilhamento para dar suporte a grandes quantidades de objetos, de granularidade fina, eficientemente.</p>
<p><span id="more-208"></span></p>
<p>Para evitar o overhead associado com o uso de milhares de instâncias, queremos criar um pool de instâncias reutilizávuma nova instância tivesse sido criada para cada uso.<br />
<img src="http://www.dofactory.com/Patterns/Diagrams/flyweight.gif" alt="Flyweight" /></p>
<p>Sabe quando vc tem akele monte de objetos iguais, que vc usa e precisa toda hora instanciar, ou tem um monte de objetos iguais. ex.: um editor de textos. EX.:</p>
<p><img src="http://shopcart.site50.net/fly_varias_inst.JPG" alt="Flyweight" /></p>
<p>com esse padrão vc faz um pool que guarda as instancias e retorna a referencia do mesmo para ser usado, no caso da casa só é preciso de um triangulo um quadrado e um losango&#8230; que são reusados&#8230;</p>
<p><img src="http://shopcart.site50.net/fly_fly.JPG" alt="Flyweight" /></p>
<p>Facil assim&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/07/patterns-flyweight/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Template Method e Factoy Method</title>
		<link>http://diariodecodigos.info/2009/07/template-method-e-factoy-method/</link>
		<comments>http://diariodecodigos.info/2009/07/template-method-e-factoy-method/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 14:11:00 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Design Pattern]]></category>

		<guid isPermaLink="false">http://diariodecodigos.wordpress.com/2009/07/10/template-method-e-factoy-method/</guid>
		<description><![CDATA[Bom estava eu na aula de PDS ano passado e vi um padrao que sabia q ia usar logo de cara, porque? ele reduz codigo! e deixa o codigo bonito e OO. ehhehe o Design Pattern Template Method e Factoy Method são muito uteis pois tiram codigos inuteis da sua classe concreta e centraliza tudo]]></description>
			<content:encoded><![CDATA[<p>Bom estava eu na aula de PDS ano passado e vi um padrao que sabia q ia usar logo de cara, porque? ele reduz codigo! e deixa o codigo bonito e OO. ehhehe</p>
<p><span id="more-24"></span></p>
<p>o Design Pattern Template Method e Factoy Method são muito uteis pois tiram codigos inuteis da sua classe concreta e centraliza tudo em uma classe abstrata&#8230; ou seja seu codigo vai ficar limpo e lindo&#8230; OO =D SRP</p>
<p>Pra que serve?</p>
<p>O themplete method como o nome diz é um methodo que vc ia ter q fazer nas sub classes e teria que reescrevelo em todas as subclasses, igual em todas elas, mudando apenas uma regiao&#8230; o template method ajuda nesse ponto, pois se vc escrever o methodo na classe abstrata ele vai ser herdado pelas subclasses logo vc vai ter q modificar apenas akele pequeno fragmento de codigo que cada classe faz diferente&#8230;</p>
<p>1º Faça o seu templete method&#8230;</p>
<pre class="brush: java;">public Algarism getAlgarism(int code){
  if(code9){
   throw new IllegalArgumentException(&quot;Só pode estar entre 0 e 9 tolinho...&quot;);
  }else{
   if (this.algarismos[code]!=null){
    return this.algarismos[code];
   }else{
    Algarism alg = this.create(code);

    if (alg == null)
     throw new NullPointerException(&quot;Algarismo esta nulo...&quot;);

    this.algarismos[code]=alg;
    return this.algarismos[code];
   }
  }
 }</pre>
<p>veja q temos uma abstração Algarism que recebe um this.crate(code&gt;); esse vai ser o nosso metodo que muda nas subclasses, logo teremos que crialo como abstrato, para que seja forçada a criação dele nas subclasses...</p>
<pre class="brush: java;">protected abstract Algarism create(int code);</pre>
<p>2º pronto agora vamos nas subclasses e apenas criamos o metodo create... que é o nosso Factoy Method:</p>
<pre class="brush: java;">protected Algarism create(int code){
  return new SymbolAlgarism(code);
 }</pre>
<pre class="brush: java;"> protected Algarism create(int code){
  return new TextAlgarism(code);
 }</pre>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/07/template-method-e-factoy-method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton em C#</title>
		<link>http://diariodecodigos.info/2009/06/singleton-em-c/</link>
		<comments>http://diariodecodigos.info/2009/06/singleton-em-c/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 11:43:00 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Design Pattern]]></category>

		<guid isPermaLink="false">http://diariodecodigos.wordpress.com/2009/06/22/singleton-em-c/</guid>
		<description><![CDATA[Se vc quer fazer que sua aplicação rode apenas uma vez, ou seja, se o (burro) usuario clicar mais de uma vez no icone, só vai abrir uma aplicação, e nao 2 ou 3. public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName (current.ProcessName); //Loop through the running processes in with]]></description>
			<content:encoded><![CDATA[<p>Se vc quer fazer que sua aplicação rode apenas uma vez, ou seja, se o<span style="color:#cccccc;"> (</span><span style="font-style:italic;color:#cccccc;">burro)</span> usuario clicar mais de uma vez no icone, só vai abrir uma aplicação, e nao 2 ou 3.<span id="more-6"></span></p>
<pre class="brush: csharp;">public static Process RunningInstance()
            {
                Process current = Process.GetCurrentProcess();
                Process[] processes = Process.GetProcessesByName (current.ProcessName);

                //Loop through the running processes in with the same name
                foreach (Process process in processes)
                {
                    //Ignore the current process
                    if (process.Id != current.Id)
                    {
                        //Make sure that the process is running from the exe file.
                        if (Assembly.GetExecutingAssembly().Location.Replace(&quot;/&quot;, &quot;\\&quot;) ==
                        current.MainModule.FileName)
                        {
                            //Return the other process instance.
                            return process;
                        }
                    }
                }

            //No other instance was found, return null.
            return null;
            }

  public static void HandleRunningInstance(Process instance)
            {
                //Make sure the window is not minimized or maximized
                ShowWindowAsync (instance.MainWindowHandle , WS_SHOWNORMAL);

                //Set the real intance to foreground window
                SetForegroundWindow (instance.MainWindowHandle);
            }

            [DllImport(&quot;User32.dll&quot;)]

            private static extern bool ShowWindowAsync(
            IntPtr hWnd, int cmdShow);
            [DllImport(&quot;User32.dll&quot;)] private static extern bool
            SetForegroundWindow(IntPtr hWnd);
            private const int WS_SHOWNORMAL = 1;

       [STAThread]
        static void Main()
        {

            //Get the running instance.
            Process instance = RunningInstance();

            if (instance == null)
            {
                //There isn't another instance, show our form.
                Application.Run (new frmLogin());
            }
            else
            {
                //There is another instance of this process.
                HandleRunningInstance(instance);
            }

        }</pre>
<p>aplique isso a sua aplicação e terá sucesso&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/06/singleton-em-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

