What is the need for Decorator Pattern in C#?

If you want to dynamically add additional tasks to an object, then you can do it using Decorator pattern. Here is a code sample to demonstrate how to use decorators:



class sampleClass {
public virtual void sampleMethod() {
Console.WriteLine(“Executing sampleMethod of sampleClass”);
}
}
abstract class decoratorClass:sampleClass {
protected sampleClass sampleObj;
public sampleClass SampleObj {
set { sampleObj = value; }
}
public override void sampleMethod() {
if (sampleObj != null) { sampleObj.sampleMethod(); }
}
}
class derivedDecorator:decoratorClass {
public override void sampleMethod() {
base.sampleMethod();
AddedActivity();
}
public void AddedActivity() {
Console.WriteLine(“Executing additional behavior using decorators”);
}
}
class testClass {
public static void Main() {
sampleClass obj = new sampleClass();
derivedDecorator dObj = new derivedDecorator();
dObj.SampleObj = obj;
dObj.sampleMethod();
}
}

Output of this code will be:

Executing sampleMethod of sampleClass
Executing additional behavior using decorators

| What is the need for Bridge Pattern in C#? | What is the need for Builder Pattern in C#? | What is the need for Chain of Responsibility Pattern in C#? | What is the need for Command Pattern in C#? | What is the need for Composite Pattern in C#? | What is the need for Decorator Pattern in C#? | What is the need for Flyweight Pattern in C#? | What is the need for Interpreter Pattern in C#? | What is the need for Iterator Pattern in C#? | What is the need for Mediator Pattern in C#? | What is the need for Memento Pattern in C#? | What is the need for Prototype Pattern in C#? | What is the need for State Pattern in C#? | What is the need for Strategy Pattern in C#? | What is the need for Template Method Pattern in C#? | What is the need for unsafe code in C#? | What is the purpose of assert() in C#? | What is the purpose of AutoResetEvent in .NET? | What is the purpose of Console.ReadLine() in C#? | What is the purpose of machine.config file in .NET? |


“Amazon and the Amazon logo are trademarks of Amazon.com, Inc. or its affiliates.”

| Privacy Policy for www.dotnet-guide.com | Disclosure | Contact |

Copyright - © 2004 - 2024 - All Rights Reserved.