装饰模式(Decorator)
1 /* 2 *“喜羊羊逃命”游戏:喜羊羊被灰太狼追,喜羊羊最多5条命,灰太狼每咬到喜羊羊一 3 * 次,喜羊羊就要少一条命。在逃的过程中喜羊羊可以吃到三种苹果,吃“红苹果”可 4 * 以给喜羊羊加上保护罩,吃“绿苹果”可以加快喜羊羊奔跑速度,吃“黄苹果”可以 5 * 使喜羊羊趟着水跑。应用装饰模式,用C#控制台应用程序实现该设计。 6 */ 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using System.Text; 11 12 namespace Decorator 13 { 14 class XiYangYang 15 { 16 public virtual void Show() 17 { 18 } 19 } 20 class Buff : XiYangYang 21 { 22 protected XiYangYang xyy; 23 public void AddBuff(XiYangYang xyy) 24 { 25 this.xyy = xyy; 26 } 27 public override void Show() 28 { 29 if (xyy != null) 30 { 31 xyy.Show(); 32 } 33 } 34 } 35 class ProtectBuff : Buff 36 { 37 public override void Show() 38 { 39 Console.WriteLine("喜羊羊吃了一个'红苹果',获得了保护罩!"); 40 base.Show(); 41 } 42 } 43 class FastBuff : Buff 44 { 45 public override void Show() 46 { 47 Console.WriteLine("喜羊羊吃了一个'绿苹果',进入加速状态!"); 48 base.Show(); 49 } 50 } 51 class SwimBuff : Buff 52 { 53 public override void Show() 54 { 55 Console.WriteLine("喜羊羊吃了一个'黄苹果',它可以游泳了!"); 56 base.Show(); 57 } 58 } 59 class Program 60 { 61 static void Main(string[] args) 62 { 63 XiYangYang xyy = new XiYangYang(); 64 Console.WriteLine("游戏开始了!"); 65 66 ProtectBuff pb = new ProtectBuff(); 67 FastBuff fb = new FastBuff(); 68 SwimBuff sb = new SwimBuff(); 69 70 pb.AddBuff(xyy); 71 fb.AddBuff(pb); 72 sb.AddBuff(fb); 73 sb.Show(); 74 75 Console.WriteLine("游戏结束了!"); 76 } 77 } 78 }

找我内推: 字节跳动各种岗位
作者:
ZH奶酪(张贺)
邮箱:
cheesezh@qq.com
出处:
http://www.cnblogs.com/CheeseZH/
*
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。