C#中Builder生成器模式解决配置电脑的问题详解
本文实例讲述了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核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C#中Builder生成器模式解决配置电脑的问题详解
本文地址: https://pptw.com/jishu/592861.html
