Piłkarze czołowych klubów europejskich trenują według ściśle zaplanowanego grafiku. Jednego dnia trenują wszyscy stałe fragmenty gry, innego grę piłką. W ciągu miesiąca oprócz meczów swojego zespołu, zdarzają się też takie dni, w których wszyscy wyjeżdżają na zgrupowania swoich reprezentacji narodowych. W tym czasie każdy piłkarz zajmuje się czym innym, zgodnie z zaleceniami swojego trenera - selekcjonera. Po powrocie z reprezentacji, piłkarze wracają do wspólnych treningów w klubie.
Zastosowanie:
Wzorca metody szablonu używa się podczas modelowania pewnego algorytmu składającego się z etapów. Każdy etap może być inny, natomiast całość powinna wykonywać się w odpowiedniej kolejności. Zatem zgodnie z założeniem narzucamy jedynie strukturę pewnego algorytmów, natomiast wykonanie kolejnych kroków zależy od konkretnych implementacji. Część kroków, wspólna dla całego algorytmu, może być także zdefiniowana w klasie bazowej.
Zasada działania:
Szablon metody definiowany jest w abstrakcyjnej klasie bazowej, gdzie w odpowiednich miejscach wywoływane są metody abstrakcyjne. Klasy dziedziczące z klasy bazowej redefiniują odpowiednie metody, wprowadzając w nich swoje zachowania. Przydatne mogą się też okazać metody wirtualne.
Przykład implementacyjny:
public abstract class AbstractLetter { private readonly string _letterContent; public AbstractLetter(string letter) { _letterContent = letter; } public void PrintLetter() { Console.Write("\t\t"); Console.Write(Recipent() + "\n"); Console.WriteLine(); Console.WriteLine(_letterContent); Console.WriteLine("\t\t" + Signature()); } public abstract string Recipent(); public abstract string Signature(); }
class FormalLetter : AbstractLetter { public FormalLetter(string s) : base(s) { } public override string Recipent() { return "Dear Sir/Madam"; } public override string Signature() { return "Yours faithfully"; } }
public class InformalLetter : AbstractLetter { public InformalLetter(string s) : base(s) { } public override string Recipent() { return "Hi Jack"; } public override string Signature() { return "See Ya"; } }
class Program { static void Main(string[] args) { string s = "This is sample letter"; FormalLetter formalLetter = new FormalLetter(s); InformalLetter informalLetter = new InformalLetter(s); formalLetter.PrintLetter(); Console.WriteLine(); informalLetter.PrintLetter(); Console.WriteLine(); } }
Brak komentarzy:
Prześlij komentarz