Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Simple Factory

Ce e Simple Factory? E o metoda de a crea in functie de anumit parametri instante ale unor clase diferite. Acest pattern (sau sablon – cum este tradus termenul in limba romana) este plementat intr-o clasa separata, a carui rol este acela de a lua decizia returnarii unei instante sau alteia in functie de anumiti parametrii.
Sa presupunem ca avem o clasa de baza, numita Person, abstracta. Din aceasta clasa derivam doua clase concrete: Child si Adult.
Clasa Person arata cam asa:

    public abstract class Person
    {
        protected string name;
        protected int age;

        public Person(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
        public abstract void Show();
    }

    public class Child : Person
    {
        public Child(string name, int age)
            : base(name, age)
        {
        }

        public override void Show()
        {
            Console.WriteLine("Child {0}, Age {1}", name, age);
        }
    }

    public class Adult : Person
    {
        public Adult(string name, int age)
            : base(name, age)
        {
        }

        public override void Show()
        {
            Console.WriteLine("Adult {0}, Age {1}", name, age);
        }
    }

Voi scrie o clasa al carei rol este numai de a creea intanta potrivita, Child sau Adult, in functie de… parametrul varsta. Aceasta clasa ar trebui sa arate cam asa:

public class SimplePersonFactory
{
     public static Person CreatePerson(string name, int age)
     {
          if (age < 0)
               throw new Exception ("Unborn");
          if(age <= 18)
               return new Child(name, age);
          else
               return new Adult(name, age);
     }
}

in metoda Main() voi scrie:

        static void Main(string[] args)
        {
            Person[] persons = new Person[5];
            persons[0] = SimplePersonFactory.CreatePerson("John", 25);
            persons[1] = SimplePersonFactory.CreatePerson("Ion", 15);
            persons[2] = SimplePersonFactory.CreatePerson("Yanosh", 35);
            persons[3] = SimplePersonFactory.CreatePerson("Juan", 12);
            persons[4] = SimplePersonFactory.CreatePerson("Ioana", 19);

            foreach (Person p in persons)
                p.Show();
        }

Acest cod va afisa:

        Adult John, Age 25
        Child Ion, Age 15
        Adult Yanosh, Age 35
        Child Juan, Age 12
        Adult Ioana, Age 19

Cu cat complexitatea luarii deciziei de a folosi o clasa sau alta creste cu atat se va vedea mai usor utilitatea acestui sablon simplu.

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*