C#中關(guān)于Builder生成器模式解決配置電腦的問題

今天就跟大家聊聊有關(guān)C#中關(guān)于Builder生成器模式解決配置電腦的問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為蠡縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè),蠡縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

一、理論定義

生成器模式 又叫:建造者模式,它  可以 把一個(gè) 復(fù)雜的對(duì)象,分步驟創(chuàng)建。

二、應(yīng)用舉例

需求描述:話說發(fā)工資了,打算去崗頂百腦匯  給老婆配置一臺(tái)電腦。
OK,坐著BRT,就出發(fā)了。
到崗頂,一美女撲面而來(lái),面帶微笑:先生,請(qǐng)問看中那個(gè)品牌,過來(lái)看一下嘛!
人家都開口了,盛情難卻,就看下吧。

三、具體編碼

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.內(nèi)存條

內(nèi)存條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.鼠標(biāo)

鼠標(biāo)Mouse

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Builder
{
  /// <summary>
  /// 鼠標(biāo)Mouse
  /// </summary>
  public class Mouse
  {
    /// <summary>
    /// Mouse品牌
    /// </summary>
    public string Brand { get; set; }
    /// <summary>
    /// 鼠標(biāo)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>
    /// 內(nèi)存條
    /// </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>
    /// 鼠標(biāo)
    /// </summary>
    public Mouse Mouse { get; set; }
  }
}

11.一臺(tái)電腦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>
    /// 內(nèi)存條
    /// </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>
    /// 鼠標(biāo)
    /// </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("內(nèi)存條  " + 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("鼠標(biāo)   " + Mouse.Brand + "\t " + Mouse.SerialsName + "系列");
      Console.WriteLine(); Console.WriteLine();
    }
  }
}

12.某一品牌 某一系列 產(chǎn)品的 具體配置

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Com.Design.Gof.Builder.Factory;
namespace Com.Design.Gof.Builder
{
  /// <summary>
  /// 某一個(gè)產(chǎn)品的配置
  /// </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>
    /// 具體配置,每個(gè)產(chǎn)品系列都有對(duì)應(yīng)的產(chǎn)品配置單
    /// </summary>
    public Config Cfg
    {
      get { return cfg; }
    }
  }
}

13.電腦配置單,讀取的是XML文件,一共有三個(gè)測(cè)試文件,聯(lián)想ThinkPad.xml,三星.xml,索尼.xml,下面只顯示聯(lián)想,其他的隨附件下載

<?xml version="1.0" encoding="utf-8" ?>
<products>
 <product Brand="lenovo" Serials="聯(lián)想IdeaCentre K330">
  <config>
   <cpu Brand="Intel">Intel 酷睿 i5 2320 </cpu>
   <MotherBoard Brand="華碩">華碩 H61系列</MotherBoard>
   <Memory Brand="金士頓">金士頓 XXXX</Memory>
   <HardDisk Brand="希捷">希捷1TB 7200轉(zhuǎn),SATA2</HardDisk>
   <GraphicCard Brand="華碩">華碩顯卡XXXX</GraphicCard>
   <Display Brand="lenovo">聯(lián)想顯示器XXXX</Display>
   <Speakers Brand="lenovo">聯(lián)想XXXX</Speakers>
   <Keyboard Brand="lenovo">聯(lián)想鍵盤XXXX</Keyboard>
   <Mouse Brand="微軟">微軟鼠標(biāo)XXXX</Mouse>
  </config>
 </product>
 <product Brand="ThinkPad" Serials="聯(lián)想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="羅技">羅技鼠標(biāo)XXXX</Mouse>
  </config>
 </product>
 <product Brand="ThinkPad" Serials="聯(lián)想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="長(zhǎng)城">長(zhǎng)城鼠標(biāo)XXXX</Mouse>
  </config>
 </product>
</products>

14.一個(gè)專門負(fù)責(zé)獲取電腦 配置單的 簡(jiǎn)單工具類

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 };
      //內(nèi)存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 };
      //鼠標(biāo)MotherBoard
      n.MoveToNext("Mouse", "");
      Brand = n.GetAttribute("Brand", "");
      Serials = n.Value;
      cfg.Mouse = new Mouse { Brand = Brand, SerialsName = Serials };
      return cfg;
    }
  }
}

15.一個(gè)接口,定義了如何構(gòu)建一個(gè)電腦

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>
    /// 內(nèi)存條
    /// </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>
    /// 鼠標(biāo)
    /// </summary>
    void BuilderMouse(Mouse mouse);
    /// <summary>
    /// 獲取組裝好的電腦
    /// </summary>
    /// <returns></returns>
    Computer GetComputer();
  }
}

16.聯(lián)想電腦

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;//某個(gè)產(chǎn)品系列的具體產(chǎn)品
    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.組裝 內(nèi)存條
    /// </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.組裝 鼠標(biāo)
    /// </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--內(nèi)存條
      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--鼠標(biāo)
      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;//某個(gè)產(chǎn)品系列的具體產(chǎn)品
    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.組裝 內(nèi)存條
    /// </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.組裝 鼠標(biāo)
    /// </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--內(nèi)存條
      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--鼠標(biāo)
      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;//某個(gè)產(chǎn)品系列的具體產(chǎn)品
    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.組裝 內(nèi)存條
    /// </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.組裝 鼠標(biāo)
    /// </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--內(nèi)存條
      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--鼠標(biāo)
      BuilderMouse(Serials.Cfg.Mouse);
      return computer;
    }
  }
}

19.美女銷售員,指導(dǎo)我們買電腦

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Builder
{
  /// <summary>
  /// 電腦廠家,銷售員指導(dǎo) 消費(fèi)者 要購(gòu)買那個(gè) 品牌 的電腦
  /// </summary>
  public enum Manufactures
  {
    Acer宏碁=1, Alienware=2,長(zhǎng)城=3,
    戴爾=4, 東芝=5, 典籍=6, 多彩=7,
    DCMOFA=8,ESER宇朔=9,富士通=10, 
    方正=11,Gateway華碩=12, 惠普=13,
    海爾=14, 瀚斯寶麗=15,Intel=16,
    技嘉=17,聯(lián)想=18, 聯(lián)想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, 萬(wàn)利達(dá)=40,
    新藍(lán)=41,優(yōu)派=42
  }
  public class Salesman
  {
    /// <summary>
    /// 電腦配置
    /// </summary>
    public void ShowConfig()
    {
      Builder.GetComputer().ShowConfig();
    }
    /// <summary>
    /// 制造商
    /// </summary>
    public IBuilder Builder { get; set; } 
  }
}

20.主函數(shù)調(diào)用

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)
    {
      //這位先生,請(qǐng)問你看中哪個(gè)型號(hào)?這邊來(lái)看下吧!
      Salesman salesman = new Salesman();
      //美女介紹的  第一臺(tái)電腦
      salesman.Builder = new ThinkPad(Manufactures.聯(lián)想ThinkPad, "聯(lián)想IdeaCentre K330");
      salesman.ShowConfig();  //電腦配置
      //第二臺(tái)電腦
      salesman.Builder = new Sony(Manufactures.索尼, "索尼E14A17ECW");
      salesman.ShowConfig();  //電腦配置
      //第三臺(tái)電腦
      salesman.Builder = new Samsung(Manufactures.三星, "三星300E4A-S0G");
      salesman.ShowConfig();  //電腦配置
      Console.ReadKey();
    }
  }
}

21.運(yùn)行結(jié)果

C#中關(guān)于Builder生成器模式解決配置電腦的問題

22.總結(jié)

本來(lái)想把每個(gè)電腦配件再細(xì)化,發(fā)現(xiàn)工程很大,電腦 產(chǎn)品的屬性很多,所以只列出2個(gè)字段。

附件里面包括了程序源碼。也包括其他項(xiàng)目的測(cè)試,有控制臺(tái),有web。

看完上述內(nèi)容,你們對(duì)C#中關(guān)于Builder生成器模式解決配置電腦的問題有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

分享文章:C#中關(guān)于Builder生成器模式解決配置電腦的問題
當(dāng)前地址:http://bm7419.com/article36/pschsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、標(biāo)簽優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司