Command Pattern voorbeeld

 

// Command pattern -- Structural example 

using System; 

namespace DoFactory.GangOfFour.Command.Structural 
{ 
    ///  
    /// MainApp startup class for Structural 
    /// Command Design Pattern. 
    /// 
    class MainApp 
    { 
        ///  
        /// Entry point into console application. 
        /// 
        static void Main() 
        { 
            // Create receiver, command, and invoker 
            Receiver receiver = new Receiver(); 
            Command command = new ConcreteCommand(receiver); 
            Invoker invoker = new Invoker(); 
            
            // Set and execute 
            command invoker.SetCommand(command); 
            invoker.ExecuteCommand(); 
            
            // Wait for user 
            Console.ReadKey(); 
        } 
    } 
    
    ///  
    /// The 'Command' abstract class 
    /// 
    abstract class Command 
    { 
        protected Receiver receiver; 
        
        // Constructor 
        public Command(Receiver receiver) 
        { 
            this.receiver = receiver; 
        } 
        public abstract void Execute(); 
    } 
    
    ///  
    /// The 'ConcreteCommand' class 
    /// 
    class ConcreteCommand : Command 
    { 
        // Constructor 
        public ConcreteCommand(Receiver receiver) : base(receiver) {} 
        public override void Execute() 
        { 
            receiver.Action(); 
        } 
    } 
    
    ///  
    /// The 'Receiver' class 
    /// 
    class Receiver 
    { 
        public void Action() 
        { 
            Console.WriteLine("Called Receiver.Action()"); 
        } 
    } 
    
    ///  
    /// The 'Invoker' class 
    /// 
    class Invoker 
    { 
        private Command _command; 
        public void SetCommand(Command command) 
        { 
            this._command = command; 
        } 
        public void ExecuteCommand() 
        {
            _command.Execute(); 
        } 
    } 
}


{{opmerking.Naam}}:

{{opmerking.OpmerkingText}}

            

Saving your comment....

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