• 建造者模式


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

    场景: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());
            }
  • 相关阅读:
    ironic port bind
    pdb /usr/bin/neutron-server
    networking_generic_switch
    [CodeForces586D]Phillip and Trains
    [CodeForces598D]Igor In the Museum
    [poj3468]A Simple Problem with Integers
    [bzoj1503][NOI2004]郁闷的出纳员
    [bzoj1208][HNOI2004]宠物收养所
    [luogu3384][模板]树链剖分
    [CodeForces869A]The Artful Expedient
  • 原文地址:https://www.cnblogs.com/chenyishi/p/9109306.html
Copyright © 2020-2023  润新知