建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
场景:LOL中玩家可以根据他们电脑的配置,选择不同的峡谷渲染方式。通过不同的设置,游戏会构建不同的峡谷,这种就是采用建造者模式来渲染地图的。高配置的电脑,展示高清的地图,低配的电脑展示低配的地图。
UML图:
示例代码:
public interface IMapBuild { List<string> Map { get; set; } void CreateTree(); void CreateUser(); void CreateRiver(); List<string> ReturnMap(); }
public class HighDeMapBuild:IMapBuild { public List<string> Map { get; set; } public void CreateTree() { this.Map.Add("高清树木"); } public void CreateUser() { this.Map.Add("高清友方用户"); this.Map.Add("高清敌方用户"); } public void CreateRiver() { this.Map.Add("高清河流"); } public List<string> ReturnMap() { this.Map=new List<string>(); CreateTree(); CreateUser(); CreateRiver(); return this.Map; } }
public class LowerDeMapBuild:IMapBuild { public List<string> Map { get; set; } public void CreateTree() { this.Map.Add("低清树木"); } public void CreateUser() { this.Map.Add("低清友方用户"); this.Map.Add("低清敌方用户"); } public void CreateRiver() { this.Map.Add("低清河流"); } public List<string> ReturnMap() { this.Map = new List<string>(); //CreateTree();可去去掉 CreateUser(); CreateRiver(); return this.Map; } }
public class Director { public List<string> Constractor(IMapBuild build) { return build.ReturnMap(); } }
static void Main(string[] args) { Director dire1 = new Director(); var highMap= dire1.Constractor(new HighDeMapBuild()); var lowerMap = dire1.Constractor(new LowerDeMapBuild()); }