本文实例讲述了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#相关内容还可查看本站专题:《C#数据结构与算法教程》、《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。
# C#
# 设计模式
# Builder
# 生成器模式
# 配置电脑问题
# C#实现文字视频生成器的示例代码
# C#实现封面图片生成器的示例代码
# C#设计模式之建造者模式生成器模式示例详解
# Python实现C#代码生成器应用服务于Unity示例解析
# C#设计模式实现之生成器模式和责任链模式
# C# Guid长度雪花简单生成器的示例代码
# c# 如何实现代码生成器
# 详解C#设计模式编程中生成器模式的使用
# 详解C#中有趣的 SourceGenerator生成器
# 鼠标
# 华硕
# 内存条
# 希捷
# 索尼
# 微软
# 电脑配置
# 金士顿
# 长城
# 罗技
# 程序设计
# 一台电脑
# 下吧
# 史密斯
# 微星
# 富士通
# 的是
# 同方
# 神舟
# 操作技巧
相关文章:
中山网站推广排名,中山信息港登录入口?
如何通过商城免费建站系统源码自定义网站主题?
如何通过主机屋免费建站教程十分钟搭建网站?
如何解决VPS建站LNMP环境配置常见问题?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
b2c电商网站制作流程,b2c水平综合的电商平台?
如何基于云服务器快速搭建网站及云盘系统?
香港服务器选型指南:免备案配置与高效建站方案解析
再谈Python中的字符串与字符编码(推荐)
大连网站制作公司哪家好一点,大连买房网站哪个好?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
已有域名和空间,如何快速搭建网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
建站之星如何通过成品分离优化网站效率?
常州企业网站制作公司,全国继续教育网怎么登录?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何通过老薛主机一键快速建站?
c# 在ASP.NET Core中管理和取消后台任务
西安专业网站制作公司有哪些,陕西省建行官方网站?
建站主机选虚拟主机还是云服务器更好?
已有域名和空间如何搭建网站?
建站之星多图banner生成与模板自定义指南
建站之星如何助力企业快速打造五合一网站?
深圳网站制作的公司有哪些,dido官方网站?
nginx修改上传文件大小限制的方法
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何通过虚拟主机空间快速建站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何在云主机上快速搭建多站点网站?
建站之星代理平台如何选择最佳方案?
用v-html解决Vue.js渲染中html标签不被解析的问题
建站之星在线客服如何快速接入解答?
如何获取PHP WAP自助建站系统源码?
如何使用Golang table-driven基准测试_多组数据测量函数效率
,有什么在线背英语单词效率比较高的网站?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
建站之星导航配置指南:自助建站与SEO优化全解析
如何快速搭建二级域名独立网站?
建站VPS选购需注意哪些关键参数?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
代刷网站制作软件,别人代刷火车票靠谱吗?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何在VPS电脑上快速搭建网站?
在线教育网站制作平台,山西立德教育官网?
高防服务器如何保障网站安全无虞?
免费视频制作网站,更新又快又好的免费电影网站?
宝塔新建站点报错如何解决?
*请认真填写需求信息,我们会在24小时内与您取得联系。