建造者模式

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

场景: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());
        }
原文地址:https://www.cnblogs.com/chenyishi/p/9109306.html