zoukankan      html  css  js  c++  java
  • C#设计模式系列 8 Builder 生成器模式之发工资了,带老婆到 岗顶百脑汇配置电脑

       1.理论定义

            生成器模式 又叫:建造者模式,它  可以 把一个 复杂的对象,分步骤创建。

       2.应用举例

              需求描述:话说发工资了,打算去岗顶百脑汇  给老婆配置一台电脑。

                            OK,坐着BRT,就出发了。

                            到岗顶,一美女扑面而来,面带微笑:先生,请问看中那个品牌,过来看一下嘛!

                            人家都开口了,盛情难却,就看下吧。

       3.具体编码

             1.CPU

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
    
        /// <summary>
        /// CPU
        /// </summary>
        public class CPU
        {
            /// <summary>
            /// CPU品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// CPU系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    2.主板

    主板MotherBoard
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// 主板
        /// </summary>
        public class MotherBoard
        {
            /// <summary>
            /// 主板品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// 主板系列名
            /// </summary>
           public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    3.内存条

    内存条Memory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
      
        /// <summary>
        /// Memory
        /// </summary>
        public class Memory
        {
            /// <summary>
            /// Memory品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// Memory系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    4.硬盘

    硬盘HardDisk
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
    
        /// <summary>
        /// HardDisk
        /// </summary>
        public class HardDisk
        {
            /// <summary>
            /// HardDisk品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// HardDisk系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    5.显卡

    显卡GraphicCard
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        ///显卡 GraphicCard
        /// </summary>
        public class GraphicCard
        {
            /// <summary>
            /// 显卡GraphicCard品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// 显卡GraphicCard系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    6.显示器

    显示器Display
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// Display
        /// </summary>
        public class Display
        {
            /// <summary>
            /// 显示器品牌
            /// </summary>
            public string Brand { get; set; }
          /// <summary>
          /// 系列名
          /// </summary>
          public string SerialsName { get; set; }
    
            //其他属性...........
        }
    }

    7.音箱

    音箱Speakers
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
      
        /// <summary>
        /// 音箱Speakers
        /// </summary>
        public class Speakers
        {
            /// <summary>
            /// Speakers品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// Speakers系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    8.键盘

    键盘Keyboard
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
      
    
        /// <summary>
        /// 键盘Keyboard
        /// </summary>
        public class Keyboard
        {
            /// <summary>
            /// Keyboard品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// 键盘Keyboard系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
    
        }
    }

    9.鼠标

    鼠标Mouse
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// 鼠标Mouse
        /// </summary>
        public class Mouse
        {
            /// <summary>
            /// Mouse品牌
            /// </summary>
            public string Brand { get; set; }
    
            /// <summary>
            /// 鼠标Mouse系列名
            /// </summary>
            public string SerialsName { get; set; }
    
            //其他属性...........
        }
    }

    10.电脑配置单Config

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        public  class Config
        {
            /// <summary>
            /// CPU
            /// </summary>
            public CPU CPU { get; set; }
            /// <summary>
            /// 显示器
            /// </summary>
            public Display Display { get; set; }
            /// <summary>
            /// 主板
            /// </summary>
            public MotherBoard MotherBoard { get; set; }
            /// <summary>
            /// 内存条
            /// </summary>
            public Memory Memory { get; set; }
            /// <summary>
            /// 硬盘
            /// </summary>
            public HardDisk HardDisk { get; set; }
            /// <summary>
            /// 显卡
            /// </summary>
            public GraphicCard GraphicCard { get; set; }
            /// <summary>
            /// 音箱
            /// </summary>
            public Speakers Speakers { get; set; }
            /// <summary>
            /// 键盘
            /// </summary>
            public Keyboard Keyboard { get; set; }
            /// <summary>
            /// 鼠标
            /// </summary>
            public Mouse Mouse { get; set; }
          
        }
    }

    11.一台电脑Computer

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// 电脑
        /// </summary>
        public  class Computer
        {
            /// <summary>
            /// CPU
            /// </summary>
            public CPU CPU { get; set; }
            /// <summary>
            /// 显示器
            /// </summary>
            public Display Display { get; set; }
             /// <summary>
            /// 主板
            /// </summary>
            public MotherBoard MotherBoard { get; set; }
            /// <summary>
            /// 内存条
            /// </summary>
            public Memory Memory { get; set; }
            /// <summary>
            /// 硬盘
            /// </summary>
            public HardDisk HardDisk { get; set; }
            /// <summary>
            /// 显卡
            /// </summary>
            public GraphicCard GraphicCard { get; set; }
            /// <summary>
            /// 音箱
            /// </summary>
            public Speakers Speakers { get; set; }
            /// <summary>
            /// 键盘
            /// </summary>
            public Keyboard Keyboard { get; set; }
            /// <summary>
            /// 鼠标
            /// </summary>
            public Mouse Mouse { get; set; }
            /// <summary>
            /// 电脑品牌厂商
            /// </summary>
            public Manufactures Manufactures { get; set; }
            /// <summary>
            /// 属于的系列
            /// </summary>
            public string Serials{ get; set; }
            /// <summary>
            /// 显示电脑配置
            /// </summary>
            public void ShowConfig()
            {
                Console.WriteLine(Manufactures +"\t"+ Serials+"   系列的配置如下:");
                Console.WriteLine("--------------------------------------------------");
                Console.WriteLine("配件      品牌\t     系列");
                Console.WriteLine("CPU      " + CPU.Brand + "\t  " + CPU.SerialsName + "系列");
                Console.WriteLine("主板     " + MotherBoard.Brand + "\t  " + MotherBoard.SerialsName + "系列");
                Console.WriteLine("内存条   " + Memory.Brand + "\t  " + Memory.SerialsName + "系列");
                Console.WriteLine("硬盘     " + HardDisk.Brand + "\t  " + HardDisk.SerialsName + "系列");
                Console.WriteLine("显卡     " + GraphicCard.Brand + "\t  " + GraphicCard.SerialsName + "系列");
                Console.WriteLine("显示器   " + Display.Brand + "\t  " + Display.SerialsName + "系列");
                Console.WriteLine("音箱     " + Speakers.Brand + "\t  " + Speakers.SerialsName + "系列");
                Console.WriteLine("键盘     " + Keyboard.Brand + "\t  " + Keyboard.SerialsName + "系列");
                Console.WriteLine("鼠标     " + Mouse.Brand + "\t  " + Mouse.SerialsName + "系列");
                Console.WriteLine(); Console.WriteLine();
            }
          
        }
    }

    12.某一品牌 某一系列 产品的 具体配置

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Com.Design.Gof.Builder.Factory;
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// 某一个产品的配置
        /// </summary>
        public class SerialsModel
        {
            private Config cfg = null;
            /// <summary>
            /// 获取电脑配置单
            /// </summary>
            /// <param name="Manufactures"></param>
            /// <param name="SerialsName"></param>
            public SerialsModel(Manufactures Manufactures, string SerialsName)
            {
               
               cfg= ConfigFactory.GetConfig(Manufactures, SerialsName);
            }
            /// <summary>
            /// 具体配置,每个产品系列都有对应的产品配置单
            /// </summary>
            public Config Cfg
            {
                get { return cfg; }
               
            }
    
        }
    }

    13.电脑配置单,读取的是XML文件,一共有三个测试文件,联想ThinkPad.xml,三星.xml,索尼.xml,下面只显示联想,其他的随附件下载

    <?xml version="1.0" encoding="utf-8" ?>
    <products>
      <product Brand="lenovo" Serials="联想IdeaCentre K330">
        <config>
          <cpu Brand="Intel">Intel 酷睿 i5 2320 </cpu>
          <MotherBoard Brand="华硕">华硕 H61系列</MotherBoard>
          <Memory Brand="金士顿">金士顿 XXXX</Memory>
          <HardDisk Brand="希捷">希捷1TB 7200转,SATA2</HardDisk>
          <GraphicCard Brand="华硕">华硕显卡XXXX</GraphicCard>
          <Display Brand="lenovo">联想显示器XXXX</Display>
          <Speakers Brand="lenovo">联想XXXX</Speakers>
          <Keyboard Brand="lenovo">联想键盘XXXX</Keyboard>
          <Mouse Brand="微软">微软鼠标XXXX</Mouse>
        </config>
      </product>
      <product Brand="ThinkPad" Serials="联想Y670P-IFI">
        <config>
          <cpu Brand="Intel">Intel 酷睿i5 2450M </cpu>
          <MotherBoard Brand="华硕">华硕 H61系列</MotherBoard>
          <Memory Brand="金士顿">金士顿 XXXX</Memory>
          <HardDisk Brand="希捷">希捷500G XXXX</HardDisk>
          <GraphicCard Brand="华硕">华硕显卡XXXX</GraphicCard>
          <Display Brand="LG">LG显示器XXXX</Display>
          <Speakers Brand="漫步者">漫步者XXXX</Speakers>
          <Keyboard Brand="微软">微软键盘XXXX</Keyboard>
          <Mouse Brand="罗技">罗技鼠标XXXX</Mouse>
        </config>
      </product>
      <product Brand="ThinkPad" Serials="联想B470P-IFI">
        <config>
          <cpu Brand="Intel">Intel 酷睿i5 2450M </cpu>
          <MotherBoard Brand="华硕">华硕 H61系列</MotherBoard>
          <Memory Brand="金士顿">金士顿 XXXX</Memory>
          <HardDisk Brand="希捷">希捷500G XXXX</HardDisk>
          <GraphicCard Brand="华硕">华硕显卡XXXX</GraphicCard>
          <Display Brand="LG">LG显示器XXXX</Display>
          <Speakers Brand="漫步者">漫步者XXXX</Speakers>
          <Keyboard Brand="微软">微软键盘XXXX</Keyboard>
          <Mouse Brand="长城">长城鼠标XXXX</Mouse>
        </config>
      </product>
    </products>

    14.一个专门负责获取电脑 配置单的 简单工具类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Xml.Linq;
    using System.Xml.XPath;
    using System.Text;
    using Com.Design.Gof.Builder;
    using System.Xml;
    using System.IO;
    namespace Com.Design.Gof.Builder.Factory
    {
        public  class ConfigFactory
        {
            /// <summary>
            /// 获取电脑配置单
            /// </summary>
            /// <param name="manufactures">电脑厂商</param>
            /// <param name="SerialName">指定系列</param>
            /// <returns></returns>
            public static Config GetConfig(Manufactures manufactures, string SerialName) {
                Config cfg = new Config();
                //从XML文件,加载电脑配置单
                XDocument doc = XDocument.Parse(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Builder\Data\" + manufactures + ".xml"));
                XPathNavigator nav=doc.CreateNavigator();
                XPathNavigator n=nav.SelectSingleNode("/products/product[@Serials='" + SerialName.Trim() + "']");
                n.MoveToChild("config","");
                if (n == null) {
                    return cfg;
                }
                string Brand = string.Empty, Serials = string.Empty;
                
                //CPU
                n.MoveToChild("cpu", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.CPU = new CPU { Brand = Brand, SerialsName = Serials };
                //主板MotherBoard
                n.MoveToNext("MotherBoard","");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.MotherBoard = new MotherBoard { Brand = Brand, SerialsName = Serials };
                //内存Memory
                n.MoveToNext("Memory", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.Memory = new Memory { Brand = Brand, SerialsName = Serials };
                //硬盘HardDisk
                n.MoveToNext("HardDisk", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.HardDisk = new HardDisk { Brand = Brand, SerialsName = Serials };
                //显卡GraphicCard
                n.MoveToNext("GraphicCard", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.GraphicCard = new GraphicCard { Brand = Brand, SerialsName = Serials };
                //显示器Display
                n.MoveToNext("Display", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.Display = new Display { Brand = Brand, SerialsName = Serials };
                //音箱Speakers
                n.MoveToNext("MotherBoard", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.Speakers = new Speakers { Brand = Brand, SerialsName = Serials };
                //键盘Keyboard
                n.MoveToNext("Keyboard", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.Keyboard = new Keyboard { Brand = Brand, SerialsName = Serials };
                //鼠标MotherBoard
                n.MoveToNext("Mouse", "");
                Brand = n.GetAttribute("Brand", "");
                Serials = n.Value;
                cfg.Mouse = new Mouse { Brand = Brand, SerialsName = Serials };
                return cfg;
            }
          
        }
    }

    15.一个接口,定义了如何构建一个电脑

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        public interface IBuilder
        {
            /// <summary>
            /// CPU
            /// </summary>
            void BuilderCPU(CPU cpu);
            /// <summary>
            /// 主板
            /// </summary>
            void BuilderMotherBoard(MotherBoard motherBoard);
            /// <summary>
            /// 显示器
            /// </summary>
            void BuilderDisplay(Display display);
            /// <summary>
            /// 内存条
            /// </summary>
            void BuilderMemory(Memory memory);
            /// <summary>
            /// 硬盘
            /// </summary>
            void BuilderHardDisk(HardDisk hardDisk);
            /// <summary>
            /// 显卡
            /// </summary>
            void BuilderGraphicCard(GraphicCard graphicCard);
            /// <summary>
            /// 音箱
            /// </summary>
            void BuilderSpeakers(Speakers speakers);
            /// <summary>
            /// 键盘
            /// </summary>
            void BuilderKeyboard(Keyboard keyboard);
            /// <summary>
            /// 鼠标
            /// </summary>
            void BuilderMouse(Mouse mouse);
            /// <summary>
            /// 获取组装好的电脑
            /// </summary>
            /// <returns></returns>
            Computer GetComputer();
        }
    }

    16.联想电脑

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// ThinkPad品牌厂商
        /// </summary>
        public class ThinkPad:IBuilder
        {
            Computer computer = null;//电脑
            SerialsModel Serials = null;//某个产品系列的具体产品
            public ThinkPad(Manufactures Manufactures, string SerialsName)
            {
                computer = new Computer { Manufactures = Manufactures, Serials = SerialsName };
                Serials = new SerialsModel(Manufactures, SerialsName);
            }
            #region 装配电脑
            /// <summary>
            /// 1.组装 CPU
            /// </summary>
            /// <param name="cpu"></param>
            public void BuilderCPU(CPU cpu)
            {
                computer.CPU = cpu;
            }
            /// <summary>
            /// 2.组装 主板
            /// </summary>
            /// <param name="motherBoard"></param>
            public void BuilderMotherBoard(MotherBoard motherBoard)
            {
                computer.MotherBoard = motherBoard;
            }
    
            /// <summary>
            /// 3.组装 内存条
            /// </summary>
            /// <param name="display"></param>
            public void BuilderMemory(Memory memory)
            {
                computer.Memory = memory;
            }
    
            /// <summary>
            ///4.组装 硬盘
            /// </summary>
            /// <param name="display"></param>
            public void BuilderHardDisk(HardDisk hardDisk)
            {
                computer.HardDisk = hardDisk;
            }
            /// <summary>
            /// 5.组装 显卡
            /// </summary>
            /// <param name="display"></param>
            public void BuilderGraphicCard(GraphicCard graphicCard)
            {
                computer.GraphicCard = graphicCard;
            }
            /// <summary>
            /// 6.组装 显示器
            /// </summary>
            /// <param name="display"></param>
            public void BuilderDisplay(Display display)
            {
                computer.Display = display;
            }
            /// <summary>
            /// 7.组装 音箱
            /// </summary>
            /// <param name="display"></param>
            public void BuilderSpeakers(Speakers speakers)
            {
                computer.Speakers = speakers;
            }
            /// <summary>
            /// 8.组装 键盘
            /// </summary>
            /// <param name="display"></param>
            public void BuilderKeyboard(Keyboard keyboard)
            {
                computer.Keyboard = keyboard;
            }
            /// <summary>
            /// 9.组装 鼠标
            /// </summary>
            /// <param name="display"></param>
            public void BuilderMouse(Mouse mouse)
            {
                computer.Mouse = mouse;
            }
            #endregion
          
    
            /// <summary>
            /// 获取组装后的电脑
            /// </summary>
            /// <returns></returns>
            public Computer GetComputer() {
                //步骤1--CPU
                BuilderCPU(Serials.Cfg.CPU);
                //步骤2---主板
                BuilderMotherBoard(Serials.Cfg.MotherBoard);
                //步骤3--内存条
                BuilderMemory(Serials.Cfg.Memory);
                //步骤4--硬盘
                BuilderHardDisk(Serials.Cfg.HardDisk);
                //步骤5--显卡
                BuilderGraphicCard(Serials.Cfg.GraphicCard);
                //步骤6--显示器
                BuilderDisplay(Serials.Cfg.Display);
                //步骤7--音箱
                BuilderSpeakers(Serials.Cfg.Speakers);
                //步骤8--键盘
                BuilderKeyboard(Serials.Cfg.Keyboard);
                //步骤9--鼠标
                BuilderMouse(Serials.Cfg.Mouse);
                return computer;
            }
          
        }
    }

    17.索尼电脑

    Sony
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// Sony索尼品牌厂商
        /// </summary>
        public class Sony:IBuilder
        {
            Computer computer = null;//电脑
            SerialsModel Serials = null;//某个产品系列的具体产品
            public Sony(Manufactures Manufactures, string SerialsName)
            {
                computer = new Computer { Manufactures = Manufactures, Serials = SerialsName };
                Serials = new SerialsModel(Manufactures, SerialsName);
            }
            #region 装配电脑
            /// <summary>
            /// 1.组装 CPU
            /// </summary>
            /// <param name="cpu"></param>
            public void BuilderCPU(CPU cpu)
            {
                computer.CPU = cpu;
            }
            /// <summary>
            /// 2.组装 主板
            /// </summary>
            /// <param name="motherBoard"></param>
            public void BuilderMotherBoard(MotherBoard motherBoard)
            {
                computer.MotherBoard = motherBoard;
            }
    
            /// <summary>
            /// 3.组装 内存条
            /// </summary>
            /// <param name="display"></param>
            public void BuilderMemory(Memory memory)
            {
                computer.Memory = memory;
            }
    
            /// <summary>
            ///4.组装 硬盘
            /// </summary>
            /// <param name="display"></param>
            public void BuilderHardDisk(HardDisk hardDisk)
            {
                computer.HardDisk = hardDisk;
            }
            /// <summary>
            /// 5.组装 显卡
            /// </summary>
            /// <param name="display"></param>
            public void BuilderGraphicCard(GraphicCard graphicCard)
            {
                computer.GraphicCard = graphicCard;
            }
            /// <summary>
            /// 6.组装 显示器
            /// </summary>
            /// <param name="display"></param>
            public void BuilderDisplay(Display display)
            {
                computer.Display = display;
            }
            /// <summary>
            /// 7.组装 音箱
            /// </summary>
            /// <param name="display"></param>
            public void BuilderSpeakers(Speakers speakers)
            {
                computer.Speakers = speakers;
            }
            /// <summary>
            /// 8.组装 键盘
            /// </summary>
            /// <param name="display"></param>
            public void BuilderKeyboard(Keyboard keyboard)
            {
                computer.Keyboard = keyboard;
            }
            /// <summary>
            /// 9.组装 鼠标
            /// </summary>
            /// <param name="display"></param>
            public void BuilderMouse(Mouse mouse)
            {
                computer.Mouse = mouse;
            }
            #endregion
          
    
            /// <summary>
            /// 获取组装后的电脑
            /// </summary>
            /// <returns></returns>
            public Computer GetComputer() {
                //步骤1--CPU
                BuilderCPU(Serials.Cfg.CPU);
                //步骤2---主板
                BuilderMotherBoard(Serials.Cfg.MotherBoard);
                //步骤3--内存条
                BuilderMemory(Serials.Cfg.Memory);
                //步骤4--硬盘
                BuilderHardDisk(Serials.Cfg.HardDisk);
                //步骤5--显卡
                BuilderGraphicCard(Serials.Cfg.GraphicCard);
                //步骤6--显示器
                BuilderDisplay(Serials.Cfg.Display);
                //步骤7--音箱
                BuilderSpeakers(Serials.Cfg.Speakers);
                //步骤8--键盘
                BuilderKeyboard(Serials.Cfg.Keyboard);
                //步骤9--鼠标
                BuilderMouse(Serials.Cfg.Mouse);
                return computer;
            }
          
        }
    }

    18.三星电脑

    三星
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// Samsung索尼品牌厂商
        /// </summary>
        public class Samsung:IBuilder
        {
            Computer computer = null;//电脑
            SerialsModel Serials = null;//某个产品系列的具体产品
            public Samsung(Manufactures Manufactures, string SerialsName)
            {
                computer = new Computer { Manufactures = Manufactures, Serials = SerialsName };
                Serials = new SerialsModel(Manufactures, SerialsName);
            }
            #region 装配电脑
            /// <summary>
            /// 1.组装 CPU
            /// </summary>
            /// <param name="cpu"></param>
            public void BuilderCPU(CPU cpu)
            {
                computer.CPU = cpu;
            }
            /// <summary>
            /// 2.组装 主板
            /// </summary>
            /// <param name="motherBoard"></param>
            public void BuilderMotherBoard(MotherBoard motherBoard)
            {
                computer.MotherBoard = motherBoard;
            }
    
            /// <summary>
            /// 3.组装 内存条
            /// </summary>
            /// <param name="display"></param>
            public void BuilderMemory(Memory memory)
            {
                computer.Memory = memory;
            }
    
            /// <summary>
            ///4.组装 硬盘
            /// </summary>
            /// <param name="display"></param>
            public void BuilderHardDisk(HardDisk hardDisk)
            {
                computer.HardDisk = hardDisk;
            }
            /// <summary>
            /// 5.组装 显卡
            /// </summary>
            /// <param name="display"></param>
            public void BuilderGraphicCard(GraphicCard graphicCard)
            {
                computer.GraphicCard = graphicCard;
            }
            /// <summary>
            /// 6.组装 显示器
            /// </summary>
            /// <param name="display"></param>
            public void BuilderDisplay(Display display)
            {
                computer.Display = display;
            }
            /// <summary>
            /// 7.组装 音箱
            /// </summary>
            /// <param name="display"></param>
            public void BuilderSpeakers(Speakers speakers)
            {
                computer.Speakers = speakers;
            }
            /// <summary>
            /// 8.组装 键盘
            /// </summary>
            /// <param name="display"></param>
            public void BuilderKeyboard(Keyboard keyboard)
            {
                computer.Keyboard = keyboard;
            }
            /// <summary>
            /// 9.组装 鼠标
            /// </summary>
            /// <param name="display"></param>
            public void BuilderMouse(Mouse mouse)
            {
                computer.Mouse = mouse;
            }
            #endregion
          
    
            /// <summary>
            /// 获取组装后的电脑
            /// </summary>
            /// <returns></returns>
            public Computer GetComputer() {
                //步骤1--CPU
                BuilderCPU(Serials.Cfg.CPU);
                //步骤2---主板
                BuilderMotherBoard(Serials.Cfg.MotherBoard);
                //步骤3--内存条
                BuilderMemory(Serials.Cfg.Memory);
                //步骤4--硬盘
                BuilderHardDisk(Serials.Cfg.HardDisk);
                //步骤5--显卡
                BuilderGraphicCard(Serials.Cfg.GraphicCard);
                //步骤6--显示器
                BuilderDisplay(Serials.Cfg.Display);
                //步骤7--音箱
                BuilderSpeakers(Serials.Cfg.Speakers);
                //步骤8--键盘
                BuilderKeyboard(Serials.Cfg.Keyboard);
                //步骤9--鼠标
                BuilderMouse(Serials.Cfg.Mouse);
                return computer;
            }
          
        }
    }

    19.美女销售员,指导我们买电脑

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Com.Design.Gof.Builder
    {
        /// <summary>
        /// 电脑厂家,销售员指导 消费者 要购买那个 品牌 的电脑
        /// </summary>
        public enum Manufactures
        {
            Acer宏碁=1, Alienware=2,长城=3,
    
            戴尔=4, 东芝=5, 典籍=6, 多彩=7,
    
            DCMOFA=8,ESER宇朔=9,富士通=10, 
    
            方正=11,Gateway华硕=12, 惠普=13,
    
            海尔=14, 瀚斯宝丽=15,Intel=16,
    
            技嘉=17,联想=18, 联想ThinkPad=19,
    
            雷蛇=20, LG=21, 镭波=22,
    
            msi微星=23, 明唐=24,NEC=25,
    
            苹果=26,清华=27,同方=28, 
    
            七喜=29, 七彩虹=30,神舟=31,
    
            索尼=32, 三星=33, 松下=34,
    
            史密斯=35, 索泰=36, 神酷=37,
    
            TerransForce=38,微软=39, 万利达=40,
    
            新蓝=41,优派=42
    
        }
        public class Salesman
        {
          
            /// <summary>
            /// 电脑配置
            /// </summary>
            public void ShowConfig()
            {
                Builder.GetComputer().ShowConfig();
            }
            /// <summary>
            /// 制造商
            /// </summary>
            public IBuilder Builder { get; set; } 
        }
    }

    20.主函数调用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Com.Design.Gof.Builder;
    namespace Com.Design.Gof.Test
    {
        class Program
        {
         
    
            static void Main(string[] args)
            {
                //这位先生,请问你看中哪个型号?这边来看下吧!
                Salesman salesman = new Salesman();
                //美女介绍的    第一台电脑
                salesman.Builder = new ThinkPad(Manufactures.联想ThinkPad, "联想IdeaCentre K330");
                salesman.ShowConfig();   //电脑配置
    
                //第二台电脑
                salesman.Builder = new Sony(Manufactures.索尼, "索尼E14A17ECW");
                salesman.ShowConfig();   //电脑配置
    
                //第三台电脑
                salesman.Builder = new Samsung(Manufactures.三星, "三星300E4A-S0G");
                salesman.ShowConfig();   //电脑配置
               Console.ReadKey();
    
            }
    
        }
    }

    21.运行结果

    22.总结

      本来想把每个电脑配件再细化,发现工程很大,电脑 产品的属性很多,所以只列出2个字段。

      附件里面包括了程序源码。也包括其他项目的测试,有控制台,有web。

      这里是附件下载(Download)

  • 相关阅读:
    机器学习的分类与主要算法对比
    关于在JSP页面中为什么一定要用${pageContext.request.contextPath}来获取项目路径,而不能用${request.contextPath}?
    Spring Boot静态资源处理
    Tomcat关闭后,重新启动,session中保存的对象为什么还存在解决方法
    Tomcat 7源码学习笔记 -9 tomcat重启后session仍然保留
    mysql-sql语句中变量的使用
    js检测对象中是否存在某个属性
    mysql :=和=的区别
    sql面试题(学生表_课程表_成绩表_教师表)
    ddd
  • 原文地址:https://www.cnblogs.com/HCCZX/p/2628452.html
Copyright © 2011-2022 走看看