首页 技术 正文
技术 2022年11月21日
0 收藏 335 点赞 2,927 浏览 2041 个字

一、建造模式的介绍

      建造者模式就是将零件组装成一个整体,用官方一点的话来讲就是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。生活中比如说组装电脑,汽车等等这些都是建造者模式的具体体现,组装电脑反应到软件上就是一个复杂的对象,然后我们使用建造者模式的时候需要抽象一个建造类,抽象一个指挥者指挥具体实现的那个类,然后就是具体实现这个对象的类,这样就避免了每新创建一个不同的复杂对象就需要重新写一下这个类,这样就只要重写建造者就可以了,我们接下来就用组装电脑这个来说明一下建造这个模式。

二、建造模式的介绍

/// <summary>
    /// 抽象建造者
    /// </summary>
    public abstract  class Builder
    {
        //安装CPU
        public abstract void BuildPartCPU();
        //安装主板
        public abstract void BuilePartMainBoard();

        //获得组装好的电脑
        public abstract Computer GetComputer();
    }

   /// <summary>
    /// 电脑类
    /// </summary>
    public class Computer
    {
        /// <summary>
        /// 电脑组合集合
        /// </summary>
        private List<string> parts = new List<string>();
        //把单件添加到电脑组件集合中
        public void Add(string part)
        {
            parts.Add(part);
        }

        
        public void Show()
        {
            Console.WriteLine(“电脑开始组装了”);
            foreach (string part in parts)
            {
                Console.WriteLine(“组件”+part+”已组装好”);
            }
            Console.WriteLine(“电脑组装好了”);
        }
    }

/// <summary>
    /// 具体的组装电脑的人
    /// </summary>
    public class ConcreteBuilder1 : Builder
    {
        Computer computer = new Computer();
        public override void BuildPartCPU()
        {
            computer.Add(“CPU”);
        }

        public override void BuilePartMainBoard()
        {
            computer.Add(“Main board”);
        }

        public override Computer GetComputer()
        {
            return computer;
        }
    }

/// <summary>
        /// 指挥者
        /// </summary>
        /// <param name=”builder”></param>
        public void Construct(Builder builder)
        {
            builder.BuildPartCPU();
            builder.BuilePartMainBoard();
        }

/// <summary>
        /// 调用
        /// </summary>
        /// <param name=”args”></param>
        static void Main(string[] args)
        {
            Director director = new Director();
            Builder b1 = new ConcreteBuilder1();

            director.Construct(b1);

            Computer computer = b1.GetComputer();
            computer.Show();

            Console.ReadKey();
        }

三、GitHub

https://github.com/wangtongzhou520/Designpattern

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,084
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,559
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,408
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,181
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,818
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,901