• 23种设计模式之建造者模式(Builder)


    建造者模式强调将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步地创建一个复杂的对象,它允许用户只通过制定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。

    public abstract class Builder  
    {  
        public abstract void MakeTitle(string title);  
        public abstract void MakeString(string str);  
        public abstract void MakeItems(string[] items);  
        public abstract Object GetResult();  
    }  
    public class Director  
    {  
        private Builder builder;  
      
        public Director(Builder builder)  
        {  
            this.builder = builder;  
        }  
      
        public Object Construct()  
        {  
            builder.MakeTitle("Greeting");  
            builder.MakeString("从早上到白天结束");  
            builder.MakeItems(new string[] { "早安", "午安" });  
      
            builder.MakeString("到了晚上");  
            builder.MakeItems(new string[] { "晚安", "好梦" });  
            return builder.GetResult();  
        }  
    }  
    public class TextBuilder : Builder  
    {  
        private StringBuilder sb = new StringBuilder();  
        public override void MakeTitle(string title)  
        {  
            sb.Append("" + title + "】/n/n");  
        }  
      
        public override void MakeString(string str)  
        {  
            sb.Append(str + "/n/n");  
        }  
      
        public override void MakeItems(string[] items)  
        {  
            for (int i = 0; i < items.Length; i++)  
            {  
                sb.Append(items[i] + "/n");  
            }  
            sb.Append("/n");  
        }  
      
        public override object GetResult()  
        {  
            return sb.ToString();  
        }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            //生成器模式  
            Builder.Director director = new Builder.Director(new Builder.TextBuilder());  
            string result = director.Construct() as string;  
            Console.WriteLine(result);  
        }  
    }  

  • 相关阅读:
    记录一次SpringCloud Alibaba整合Springboot出现的'com.netflix.client.config.IClientConfig' that could not be found
    ysoserial-URLDNS链分析
    DIVA闯关-APP测试
    前端页面直接转换为PDF文件流
    中位数最大问题
    【vim】Linux添加环境变量等
    FFmpeg使用笔记
    【memo】及时留坑
    【album】深度学习 / 机器学习 / 人工智能
    【Linux】软件安装使用【aubio / FFmpeg】
  • 原文地址:https://www.cnblogs.com/guwei4037/p/6689335.html
Copyright © 2020-2023  润新知