Decorator schema C # simple example,
Decorator schema C # simple example
The basic functions of players are mobile and running. BaseAbility
New features: 1. Damage skill harmAbility; 2. Barrier skill BaulkAbility; 3. Auxiliary skill restorability
PLAYER 1 increases the damage skill Decorator harm = new HarmAbility (baseAbility );
PLAYER 2 increases the damage skill and obstacle skill. Decorator baulk = new BaulkAbility (harm );
Player 3: Increase the damage skill, obstacle skill, and auxiliary skill Decorator assist = new damage ability (baulk );
?
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
namespace adapterpattern{ public partial class DecoratorForm : Form { public DecoratorForm() { InitializeComponent(); } private void btnDisplay_Click(object sender, EventArgs e) { BaseAbility baseAbility = new BaseOperation(); baseAbility.Run(); listBox1.Items.Add(baseData.baseString); baseData.baseString = ""; listBox1.Items.Add("*********** Player 1 new function: Damage **************"); Decorator harm = new HarmAbility(baseAbility); harm.Run(); listBox1.Items.Add(baseData.baseString); baseData.baseString = ""; listBox1.Items.Add("*********** PLAYER 2 new features: Damage and obstruction **************"); Decorator baulk = new BaulkAbility(harm); baulk.Run(); listBox1.Items.Add(baseData.baseString); baseData.baseString = ""; listBox1.Items.Add("*********** Player 3 new features: damage, obstruction, and assistance **************"); Decorator assist = new AssistAbility(baulk); assist.Run(); listBox1.Items.Add(baseData.baseString); } } public abstract class BaseAbility // Basic Abstract Functions { public abstract void Run(); } public class BaseOperation : BaseAbility// Basic object functions { public override void Run() { baseData.baseString += "--- Mobile ---"; baseData.baseString += "---- Run ----"; } } public abstract class Decorator : BaseAbility// Interface inheritance { private BaseAbility baseAbility;// Has-A object combination public Decorator(BaseAbility baseAbility)// Decorative connection point { this.baseAbility = baseAbility; } public override void Run() { baseAbility.Run(); } } public class baseData// Data Transfer Station { public static string baseString { get; set; } } public class HarmAbility : Decorator// Increase the damage skill { public HarmAbility(BaseAbility baseAbility) : base(baseAbility) { } public override void Run()// Increase the damage { // base.Move(); base.Run(); baseData.baseString += "----- Injury -----"; } } public class BaulkAbility : Decorator// Increase the obstacle skill { public BaulkAbility(BaseAbility baseAbility) : base(baseAbility) { } public override void Run()// Add obstacles { // base.Move(); base.Run(); baseData.baseString += "----- Obstruction -----"; } } public class AssistAbility : Decorator// Add auxiliary skills { public AssistAbility(BaseAbility baseAbility) : base(baseAbility) { } public override void Run() { base.Run(); baseData.baseString += "----- Auxiliary -----"; } }} |