ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计模式之建造者模式

2022-07-21 01:01:03  阅读:168  来源: 互联网

标签:builder Console Builder void 建造 模式 WriteLine 设计模式 public


一、建造者模式:如果创建某个对象要经过多个组件组装才能完成,我们可以设计一个充当建造者角色的类和一个充当指挥者的类,通过指挥者控制建造者按步骤组装需要创建的对象,这样客户端就只依赖于指挥者类。

二、实现思路 :设计一个建造者类,其中包含要创建对象的所有组件的创建方法,然后再创建一个指挥者,指挥建造者方法执行对象的创建。

三、代码举例:   

 

抽象类AbstractBuilder:

namespace Builder
{
    public  abstract class AbstractBuilder
    {
        public abstract void CreateCpu();
        public abstract void CreateMainboard();
        public abstract void CreateRom();
        public abstract void CreateRam();
        public abstract void CreateComputer();
    }
}

 实现类AcerBuilder:

namespace Builder
{
   public class AcerBuilder : AbstractBuilder
    {
        public override void CreateComputer()
        {
            Console.WriteLine("组装成Acer电脑");
        }

        public override void CreateCpu()
        {
            Console.WriteLine("创建cpu");
        }

        public override void CreateMainboard()
        {
            Console.WriteLine("创建主板");
        }

        public override void CreateRam()
        {
            Console.WriteLine("创建Ram内存条");
        }

        public override void CreateRom()
        {
            Console.WriteLine("创建Rom硬盘");
        }
    }
}

 实现类DellBuilder:

namespace Builder
{
  public   class DellBuilder : AbstractBuilder
    {
        public override void CreateComputer()
        {
            Console.WriteLine("组装成Dell电脑");
        }
        public override void CreateCpu()
        {
            Console.WriteLine("创建cpu");
        }

        public override void CreateMainboard()
        {
            Console.WriteLine("创建主板");
        }

        public override void CreateRam()
        {
            Console.WriteLine("创建Ram内存条");
        }

        public override void CreateRom()
        {
            Console.WriteLine("创建Rom硬盘");
        }
    }
}

 指挥者类Director:

namespace Builder
{
   public  class Director
    {
        public AbstractBuilder builder = null;
        public Director(AbstractBuilder builder)
        {
            this.builder = builder;
        }
        public void GetComputer()
        {
            Console.WriteLine("正在指挥builder生产电脑...");
            this.builder.CreateCpu();
            this.builder.CreateMainboard();
            this.builder.CreateRam();
            this.builder.CreateRom();
            Console.WriteLine("builder生产电脑组件完成...");
            this.builder.CreateComputer();
            Console.WriteLine("电脑组装完成!");
        }
    }
}

 客户类:

   {
    //建造者模式中包含2个角色,指挥者和建造者
    Builder.AbstractBuilder Acerbuilder = new Builder.AcerBuilder();//充当建造者,建造对象组件
    Builder.Director director0 = new Builder.Director(Acerbuilder);//充当指挥者,控制建造者建造过程
    director0.GetComputer();//交互产品

    Builder.AbstractBuilder Dellbuilder = new Builder.DellBuilder();//充当建造者,建造对象组件
    Builder.Director director1 = new Builder.Director(Dellbuilder);//充当指挥者,控制建造者建造过程
    director1.GetComputer();//交互产品
   }

 运行结果:

四、建造者模式的优缺点及应用:它适用于非常复杂的对象的创建,通常这种复杂的对象具有很多创建步骤,建造者模式关注的不是转移细节,而是关注对象的创建步骤,在指挥者类中不应该包含除了控制建造者执行组件创建逻辑以外额其他逻辑。

标签:builder,Console,Builder,void,建造,模式,WriteLine,设计模式,public
来源: https://www.cnblogs.com/zqhIndex/p/10285403.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有