zoukankan      html  css  js  c++  java
  • 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);  
        }  
    }  

  • 相关阅读:
    Logging模块
    uWSGI和WSGI区别
    python内置函数getattr用法
    linux 升级python2.7
    JavaScript中判断null、undefined与NaN的方法
    python计算两个数的百分比
    BeautifulSoup中查找元素 select() 和find()区别
    Windows系统以及谷歌浏览器快捷键,控制台常用命令
    自己看源码的一些方法和心得分享
    JDK源码之AbstractStringBuilder类分析
  • 原文地址:https://www.cnblogs.com/guwei4037/p/6689335.html
Copyright © 2011-2022 走看看