首页后端开发ASP.NETC#中Builder生成器模式解决配置电脑的问题详解

C#中Builder生成器模式解决配置电脑的问题详解

时间2024-01-30 18:09:03发布访客分类ASP.NET浏览1019
导读:收集整理的这篇文章主要介绍了C#中Builder生成器模式解决配置电脑的问题详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#设计模式之Builder生成器模式解决带老婆配置电脑问题,简单介绍了生成器模式的概念、功...
收集整理的这篇文章主要介绍了C#中Builder生成器模式解决配置电脑的问题详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#设计模式之Builder生成器模式解决带老婆配置电脑问题,简单介绍了生成器模式的概念、功能并结合具体实例形式分析了C#生成器模式解决配电脑问题的步骤与相关操作技巧,需要的朋友可以参考下

本文实例讲述了C#设计模式之Builder生成器模式解决带老婆配置电脑问题。分享给大家供大家参考,具体如下:

一、理论定义

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

二、应用举例

需求描述:话说发工资了,打算去岗顶百脑汇 给老婆配置一台电脑。
OK,坐着brT,就出发了。
到岗顶,一美女扑面而来,面带微笑:先生,请问看中那个品牌,过来看一下嘛!
人家都开口了,盛情难却,就看下吧。

三、具体编码

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。

以上就是C#中Builder生成器模式解决配置电脑的问题详解的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

Buildercsharp

若转载请注明出处: C#中Builder生成器模式解决配置电脑的问题详解
本文地址: https://pptw.com/jishu/592861.html
jquery中怎么判断值在不在数组中 jquery怎么修改display属性

游客 回复需填写必要信息