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 }

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 

应用:可以集合抽象工厂模式来创建角色。

posted @ 2014-02-14 17:41  kadajEvo  阅读(129)  评论(0)    收藏  举报