c# 建造者模式
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Builder 8 { 9 public class Behavior 10 { 11 List<string> m_ListSkill = new List<string>(); 12 List<string> m_ListAction = new List<string>(); 13 public void AddSkill(string str) 14 { 15 m_ListSkill.Add(str); 16 } 17 public void AddAction(string str) 18 { 19 m_ListAction.Add(str); 20 } 21 public void FreeSkill(string str) 22 { 23 foreach (string name in m_ListSkill) 24 { 25 if (name == str) 26 { 27 Console.WriteLine("释放技能"); 28 } 29 else 30 { 31 Console.WriteLine("没有找到"); 32 } 33 34 } 35 } 36 public void FreeAction(string str) 37 { 38 foreach (string name in m_ListAction) 39 { 40 if (name == str) 41 { 42 Console.WriteLine("播放动画" + str); 43 } 44 else 45 { 46 Console.WriteLine("没有找到"); 47 } 48 49 } 50 } 51 52 } 53 public abstract class Builder 54 { 55 public abstract void Skill(); 56 public abstract void Action(); 57 public abstract Behavior GetResult(); 58 } 59 60 public class Role 61 { 62 public void Construct(Builder builder) 63 { 64 builder.Skill(); 65 builder.Action(); 66 } 67 } 68 69 class Role1 : Builder 70 { 71 private Behavior behavior = new Behavior(); 72 public override void Action() 73 { 74 behavior.AddAction("动作1"); 75 } 76 public override void Skill() 77 { 78 behavior.AddSkill("技能1"); 79 } 80 public override Behavior GetResult() 81 { 82 return behavior; 83 } 84 } 85 class Role2 : Builder 86 { 87 private Behavior behavior = new Behavior(); 88 public override void Action() 89 { 90 behavior.AddAction("动作2"); 91 } 92 public override void Skill() 93 { 94 behavior.AddSkill("技能2"); 95 } 96 public override Behavior GetResult() 97 { 98 return behavior; 99 } 100 } 101 class Program 102 { 103 static void Main(string[] args) 104 { 105 Role role = new Role(); 106 Role1 role1 = new Role1(); 107 Role2 role2 = new Role2(); 108 109 role.Construct(role1); 110 role.Construct(role2); 111 Behavior behavior = role1.GetResult(); 112 behavior.FreeAction("动作1"); 113 Behavior behavior1 = role2.GetResult(); 114 behavior1.FreeSkill("技能2"); 115 Console.ReadKey(); 116 } 117 } 118 }
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
应用:可以集合抽象工厂模式来创建角色。

浙公网安备 33010602011771号