官方QQ群:127876820【C#编程技术-全国站--未满人】

C#设计模式

C#的设计模式 意图   将抽象部分与实现部分分离,使它们都可以独立的变化。   场景   还是说我们要做的网络游戏,多个场景需要扩充的问题我们已经采用了创建型模式来解决。现在的问题就是,不仅仅是游戏场景会不断扩充,而且游戏的模式也在不断扩充。比如,除了最基本的战斗模式之外,还会有道具模式,金币模式等。   对于这种在多个维度上都会有变化或扩充需求的项目来说,可以考虑引入桥接模式。或许你会说,不管是什么场景,不管什么模式,都可以是抽象场景的一个子类,但是,如果这样的话,4个场景和3种模式就会产生12个子类,而10个场景5种模式就会有50个子类。一味进行继承并不是什么好方法,桥接模式的思想是把继承转化为组合,把乘法(10*5=50)转化为加法(10+5=15)。   示例代码 以下是引用片段:  using System;   using System.Collections.Generic;   using System.Text;   namespace BridgeExample   {   class Program   {   static void Main(string[] args)   {   PatrixScene halfPaper = new HalfPaper();   halfPaper.Mode = new GoldMode();   halfPaper.LoadScene();   PatrixScene matrix = new Matrix();   matrix.Mode = new PrpoertyMode();   matrix.LoadScene();   }   }   abstract class PatrixScene   {   protected GameMode mode;   public GameMode Mode   {   get { return mode; }   set { mode = value; }   }   public abstract void LoadScene();   }   class HalfPaper : PatrixScene   {   public override void LoadScene()   {   Console.WriteLine("Load HalfPaper Completed");   mode.InitScene();   }   }   class Matrix : PatrixScene   {   public override void LoadScene()   {   Console.WriteLine("Load Matrix Completed");   mode.InitScene();   }   }   abstract class GameMode   {   public abstract void InitScene();   }   class PrpoertyMode : GameMode   {   public override void InitScene()   {   Console.WriteLine("Init Property Mode Completed");   }   }   class GoldMode : GameMode   {   public override void InitScene()   {   Console.WriteLine("Init Gold Mode Completed");   }   }   }

posted @ 2010-09-29 11:56  碧海蓝天_C#  阅读(240)  评论(0编辑  收藏  举报
官方QQ群:127876820【C#编程技术-全国站--未满人】