Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

Patty Quiz 1

Visti i feedback abbastanza buoni :-) della serie di quiz su C#, ho pensato ad aprirne un'altra, forse più difficile, su design patterns. L'ho chiamata Patty Quiz per toglierle un po' di occhiaie e non per ultimo, perché mi piace tanto Patty Pravo :-)

Il codice qui sotto vuole calcolare il numero delle foglie (nodi senza figli) del grafo orientato determinato dal nodo di partenza root:

using System;
using System.Collections;

interface Component
{
  void Add(Component c);
  int Count{get;}
}

class Composite: Component
{
  private ArrayList _children = new ArrayList();

  public void Add(Component c)
  {
    _children.Add(c);
  }
  public int Count
  {
    get
    {
      int count = 0;
      foreach(Component c in _children)
      {
        count += c.Count;
      }
      return count;
    }
  }
}

class Leaf: Component
{
  public void Add(Component c)
  {
    throw new NotSupportedException("Le foglie non hanno figli");
  }
  public int Count
  {
    get
    {
      return 1;
    }
  }
}

public class Client
{
  public static void Main()
  {
    Composite root = new Composite();
    Composite comp = new Composite();
    Leaf l1 = new Leaf();
    Leaf l2 = new Leaf();

    comp.Add(l1);
    comp.Add(l2);
    root.Add(l1);
    root.Add(comp);

    Console.WriteLine("Numero delle foglie: {0}", root.Count);
    Console.Read();
  }
}

Avete riconosciuto sicuramente il pattern Composite però, il numero delle foglie è sbagliato: 3 anziché 2. Per correggere questo codice, che pattern tra i seguenti 3 utilizzereste?

  • A. Iterator
  • B. Builder
  • C. Visitor

L'idea di questo primo post mi è venuta leggendo il capitolo 5 del libro "Design Patterns in C#" di Steven John Metsker.

Print | posted on venerdì 4 giugno 2004 02:58 | Filed Under [ Quiz Sharp Pattern Dappertutto ]

Powered by:
Powered By Subtext Powered By ASP.NET