Template method pattern

Template method pattern:

Als je weet dat je objecten gaat krijgen waarvan een deel van de methods overheen komen, kun je de template method pattern gebruiken. Je maakt dus een basis class en zet hierin de methods die overheenkomen. Je maakt deze class abstract zodat hij niet gebruikt kan worden en alleen overerft kan worden. De nieuwe objecten met de overeenkomende methods laat je van deze basis abstracte class overerven et. voila de overeenkomende methods zijn er al, je hoeft deze class alleen nog uit te breiden met methods die specific voor deze class zijn.

 

Voorbeeld template pattern:

namespace TemplatePattern 
{ 
    public abstract class Hotdrink 
    { 
        protected void boilWater() 
        { 
            System.Windows.Forms.MessageBox.Show("Boiling water"); 
        } 
        public abstract void AddIngredients(); 
        public abstract void Melk(); 
        public void Makedrink(Hotdrink hotdrink) 
        { 
            hotdrink.boilWater(); 
            hotdrink.AddIngredients(); 
            hotdrink.Melk(); 
        } 

    } 
    public class Tea : Hotdrink 
    { 
        public override void AddIngredients() 
        { 
            System.Windows.Forms.MessageBox.Show("Gooi er thee in"); 
        } 
        public override void Melk() { } 
    } 
    public class coffee : Hotdrink 
    { 
        public override void AddIngredients() 
        { 
            System.Windows.Forms.MessageBox.Show("Gooi er kofie in"); 
        } 
        public override void Melk() 
        { 
            System.Windows.Forms.MessageBox.Show("en melk erin"); 
        } 
    } 
}
 

 

Je maakt dus op basis van hotdrink een nieuwe class aan, bv Hotdrink koffie = new coffee(); En daarna gebruik je de makedrink method om alle methods af te vuren, dus: koffie.makedrink(koffie). Als je dus een koffie class hebt gemaakt wordt de code afgevuurd zoals hij in de koffie class staat heb je een tea class gemaakt dan wordt de code afgevuurd zoals hij in de tea class staat. Zo kun varieren van code per class

{{opmerking.Naam}}:

{{opmerking.OpmerkingText}}

            

Saving your comment....

Naam is verplicht!
Email is verplicht!
Opmerking is verplicht!