Tuesday, December 11, 2007

New entries will be published by the better blog.

12/11/2007 2:37:20 PM (Mitteleuropäische Zeit , UTC+01:00)  #    Disclaimer  |  Comments [1]  | 
 Saturday, July 15, 2006

Anwendungsfall:

Ein Objekt soll dynamisch um einzelne Funktionalitäten oder Zuständigkeiten erweitert werden. Diese Funktionalitäten sind beliebig kombinierbar. Decorator können als Altnerative für lange Vererbungsketten angesehen werden, bleiben dabei aber viel flexibler als Hierarchien.

Beispiele für die Anwendung:

UI-Elemente sollten je nach Verwendungszweck verschiedene zusätzliche Funktionalitäten oder Eigenschaften implementieren (Beispiel WebUserControls: einfacher Hyperlink, Hyperlink mit Contextmenü, Hyperlink mit JavaScript Funktionen)

Grafische Darstellung:

Beispielcode:

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
      IExtendedControl c0 = new SimpleLabel();
      c0.Draw(Response);


      Response.Write("<br>");

      IExtendedControl c1 = new LableExtension1(new SimpleLabel());
      c1.Draw(Response);

      Response.Write("<br>");

      IExtendedControl c2 = new LableExtension2(new SimpleLabel());
      c2.Draw(Response);

      Response.Write("<br>");

      IExtendedControl c3 = new LableExtension2(new LableExtension1(new SimpleLabel()));
      c3.Draw(Response);
   }
}

Ausgabe des Beispielcodes:

I'm a simple Label
I'm a simple Label, decorated with LabelExtension1
I'm a simple Label, decorated with LabelExtension2
I'm a simple Label, decorated with LabelExtension1, decorated with LabelExtension2

Download der Anwendung:

DesignPatterns.zip (4.66 KB)

7/15/2006 3:10:33 PM (Mitteleuropäische Sommerzeit , UTC+02:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, May 17, 2006
Anwendungsfall:
  • Es soll nur eine Instanz der Klasse existieren bzw. es soll nicht möglich sein, mehrere Instanzen der Klasse innerhalb eines Anwendungskontexts zu erzeugen.

Beispiele für die Anwendung:

  • Loadbalancer
  • ConnectionPools

Grafische Darstellung:

Beispielcode:

public class Singleton
{

   
private static Singleton instance;

   
private Singleton()
   {
   }

   public static Singleton GetInstance()
   {
      if (Singleton.instance == null)
      {
         Singleton.instance = new Singleton();
      }
      return Singleton.instance;
   }

}

5/17/2006 5:13:25 PM (Mitteleuropäische Sommerzeit , UTC+02:00)  #    Disclaimer  |  Comments [0]  |