zoukankan      html  css  js  c++  java
  • 建造者模式

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

    场景: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());
            }
  • 相关阅读:
    进入MFC讲坛的前言(四)
    进入MFC讲坛的前言(二)
    进入MFC讲坛的前言(一)
    进入MFC讲坛的前言(三)
    jar命令+7z:创建,替换,修改,删除Jar, war, ear包中的文件
    java架构之项目结构(entity / DTO / VO)
    面试无忧之Zookeeper总结心得
    BigDecimal.setScale 处理java小数点
    最详细的 paypal 支付接口开发--Java版
    社会化登录分享-Android SDK的二次封装和使用
  • 原文地址:https://www.cnblogs.com/chenyishi/p/9109306.html
Copyright © 2011-2022 走看看