0

0

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

黄舟

黄舟

发布时间:2017-09-15 11:25:31

|

1768人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了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
{
  /// 
  /// CPU
  /// 
  public class CPU
  {
    /// 
    /// CPU品牌
    /// 
    public string Brand { get; set; }
    /// 
    /// CPU系列名
    /// 
    public string SerialsName { get; set; }
    //其他属性...........
  }
}

2.主板

主板MotherBoard


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

3.内存条

内存条Memory


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

4.硬盘

硬盘HardDisk


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

5.显卡

显卡GraphicCard


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

6.显示器

显示器Display


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

7.音箱

音箱Speakers


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

8.键盘

键盘Keyboard

Flowise
Flowise

一款开源的低代码/无代码AI应用开发工具

下载


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

9.鼠标

鼠标Mouse


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Builder
{
  /// 
  /// 鼠标Mouse
  /// 
  public class Mouse
  {
    /// 
    /// Mouse品牌
    /// 
    public string Brand { get; set; }
    /// 
    /// 鼠标Mouse系列名
    /// 
    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
  {
    /// 
    /// CPU
    /// 
    public CPU CPU { get; set; }
    /// 
    /// 显示器
    /// 
    public Display Display { get; set; }
    /// 
    /// 主板
    /// 
    public MotherBoard MotherBoard { get; set; }
    /// 
    /// 内存条
    /// 
    public Memory Memory { get; set; }
    /// 
    /// 硬盘
    /// 
    public HardDisk HardDisk { get; set; }
    /// 
    /// 显卡
    /// 
    public GraphicCard GraphicCard { get; set; }
    /// 
    /// 音箱
    /// 
    public Speakers Speakers { get; set; }
    /// 
    /// 键盘
    /// 
    public Keyboard Keyboard { get; set; }
    /// 
    /// 鼠标
    /// 
    public Mouse Mouse { get; set; }
  }
}

11.一台电脑Computer


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Builder
{
  /// 
  /// 电脑
  /// 
  public class Computer
  {
    /// 
    /// CPU
    /// 
    public CPU CPU { get; set; }
    /// 
    /// 显示器
    /// 
    public Display Display { get; set; }
     /// 
    /// 主板
    /// 
    public MotherBoard MotherBoard { get; set; }
    /// 
    /// 内存条
    /// 
    public Memory Memory { get; set; }
    /// 
    /// 硬盘
    /// 
    public HardDisk HardDisk { get; set; }
    /// 
    /// 显卡
    /// 
    public GraphicCard GraphicCard { get; set; }
    /// 
    /// 音箱
    /// 
    public Speakers Speakers { get; set; }
    /// 
    /// 键盘
    /// 
    public Keyboard Keyboard { get; set; }
    /// 
    /// 鼠标
    /// 
    public Mouse Mouse { get; set; }
    /// 
    /// 电脑品牌厂商
    /// 
    public Manufactures Manufactures { get; set; }
    /// 
    /// 属于的系列
    /// 
    public string Serials{ get; set; }
    /// 
    /// 显示电脑配置
    /// 
    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
{
  /// 
  /// 某一个产品的配置
  /// 
  public class SerialsModel
  {
    private Config cfg = null;
    /// 
    /// 获取电脑配置单
    /// 
    /// 
    /// 
    public SerialsModel(Manufactures Manufactures, string SerialsName)
    {
      cfg= ConfigFactory.GetConfig(Manufactures, SerialsName);
    }
    /// 
    /// 具体配置,每个产品系列都有对应的产品配置单
    /// 
    public Config Cfg
    {
      get { return cfg; }
    }
  }
}

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




 
  
   Intel 酷睿 i5 2320 
   华硕 H61系列
   金士顿 XXXX
   希捷1TB 7200转,SATA2
   华硕显卡XXXX
   联想显示器XXXX
   联想XXXX
   联想键盘XXXX
   微软鼠标XXXX
  
 
 
  
   Intel 酷睿i5 2450M 
   华硕 H61系列
   金士顿 XXXX
   希捷500G XXXX
   华硕显卡XXXX
   LG显示器XXXX
   漫步者XXXX
   微软键盘XXXX
   罗技鼠标XXXX
  
 
 
  
   Intel 酷睿i5 2450M 
   华硕 H61系列
   金士顿 XXXX
   希捷500G XXXX
   华硕显卡XXXX
   LG显示器XXXX
   漫步者XXXX
   微软键盘XXXX
   长城鼠标XXXX
  
 

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
  {
    /// 
    /// 获取电脑配置单
    /// 
    /// 电脑厂商
    /// 指定系列
    /// 
    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
  {
    /// 
    /// CPU
    /// 
    void BuilderCPU(CPU cpu);
    /// 
    /// 主板
    /// 
    void BuilderMotherBoard(MotherBoard motherBoard);
    /// 
    /// 显示器
    /// 
    void BuilderDisplay(Display display);
    /// 
    /// 内存条
    /// 
    void BuilderMemory(Memory memory);
    /// 
    /// 硬盘
    /// 
    void BuilderHardDisk(HardDisk hardDisk);
    /// 
    /// 显卡
    /// 
    void BuilderGraphicCard(GraphicCard graphicCard);
    /// 
    /// 音箱
    /// 
    void BuilderSpeakers(Speakers speakers);
    /// 
    /// 键盘
    /// 
    void BuilderKeyboard(Keyboard keyboard);
    /// 
    /// 鼠标
    /// 
    void BuilderMouse(Mouse mouse);
    /// 
    /// 获取组装好的电脑
    /// 
    /// 
    Computer GetComputer();
  }
}

16.联想电脑


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Builder
{
  /// 
  /// ThinkPad品牌厂商
  /// 
  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 装配电脑
    /// 
    /// 1.组装 CPU
    /// 
    /// 
    public void BuilderCPU(CPU cpu)
    {
      computer.CPU = cpu;
    }
    /// 
    /// 2.组装 主板
    /// 
    /// 
    public void BuilderMotherBoard(MotherBoard motherBoard)
    {
      computer.MotherBoard = motherBoard;
    }
    /// 
    /// 3.组装 内存条
    /// 
    /// 
    public void BuilderMemory(Memory memory)
    {
      computer.Memory = memory;
    }
    /// 
    ///4.组装 硬盘
    /// 
    /// 
    public void BuilderHardDisk(HardDisk hardDisk)
    {
      computer.HardDisk = hardDisk;
    }
    /// 
    /// 5.组装 显卡
    /// 
    /// 
    public void BuilderGraphicCard(GraphicCard graphicCard)
    {
      computer.GraphicCard = graphicCard;
    }
    /// 
    /// 6.组装 显示器
    /// 
    /// 
    public void BuilderDisplay(Display display)
    {
      computer.Display = display;
    }
    /// 
    /// 7.组装 音箱
    /// 
    /// 
    public void BuilderSpeakers(Speakers speakers)
    {
      computer.Speakers = speakers;
    }
    /// 
    /// 8.组装 键盘
    /// 
    /// 
    public void BuilderKeyboard(Keyboard keyboard)
    {
      computer.Keyboard = keyboard;
    }
    /// 
    /// 9.组装 鼠标
    /// 
    /// 
    public void BuilderMouse(Mouse mouse)
    {
      computer.Mouse = mouse;
    }
    #endregion
    /// 
    /// 获取组装后的电脑
    /// 
    /// 
    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
{
  /// 
  /// Sony索尼品牌厂商
  /// 
  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 装配电脑
    /// 
    /// 1.组装 CPU
    /// 
    /// 
    public void BuilderCPU(CPU cpu)
    {
      computer.CPU = cpu;
    }
    /// 
    /// 2.组装 主板
    /// 
    /// 
    public void BuilderMotherBoard(MotherBoard motherBoard)
    {
      computer.MotherBoard = motherBoard;
    }
    /// 
    /// 3.组装 内存条
    /// 
    /// 
    public void BuilderMemory(Memory memory)
    {
      computer.Memory = memory;
    }
    /// 
    ///4.组装 硬盘
    /// 
    /// 
    public void BuilderHardDisk(HardDisk hardDisk)
    {
      computer.HardDisk = hardDisk;
    }
    /// 
    /// 5.组装 显卡
    /// 
    /// 
    public void BuilderGraphicCard(GraphicCard graphicCard)
    {
      computer.GraphicCard = graphicCard;
    }
    /// 
    /// 6.组装 显示器
    /// 
    /// 
    public void BuilderDisplay(Display display)
    {
      computer.Display = display;
    }
    /// 
    /// 7.组装 音箱
    /// 
    /// 
    public void BuilderSpeakers(Speakers speakers)
    {
      computer.Speakers = speakers;
    }
    /// 
    /// 8.组装 键盘
    /// 
    /// 
    public void BuilderKeyboard(Keyboard keyboard)
    {
      computer.Keyboard = keyboard;
    }
    /// 
    /// 9.组装 鼠标
    /// 
    /// 
    public void BuilderMouse(Mouse mouse)
    {
      computer.Mouse = mouse;
    }
    #endregion
    /// 
    /// 获取组装后的电脑
    /// 
    /// 
    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
{
  /// 
  /// Samsung索尼品牌厂商
  /// 
  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 装配电脑
    /// 
    /// 1.组装 CPU
    /// 
    /// 
    public void BuilderCPU(CPU cpu)
    {
      computer.CPU = cpu;
    }
    /// 
    /// 2.组装 主板
    /// 
    /// 
    public void BuilderMotherBoard(MotherBoard motherBoard)
    {
      computer.MotherBoard = motherBoard;
    }
    /// 
    /// 3.组装 内存条
    /// 
    /// 
    public void BuilderMemory(Memory memory)
    {
      computer.Memory = memory;
    }
    /// 
    ///4.组装 硬盘
    /// 
    /// 
    public void BuilderHardDisk(HardDisk hardDisk)
    {
      computer.HardDisk = hardDisk;
    }
    /// 
    /// 5.组装 显卡
    /// 
    /// 
    public void BuilderGraphicCard(GraphicCard graphicCard)
    {
      computer.GraphicCard = graphicCard;
    }
    /// 
    /// 6.组装 显示器
    /// 
    /// 
    public void BuilderDisplay(Display display)
    {
      computer.Display = display;
    }
    /// 
    /// 7.组装 音箱
    /// 
    /// 
    public void BuilderSpeakers(Speakers speakers)
    {
      computer.Speakers = speakers;
    }
    /// 
    /// 8.组装 键盘
    /// 
    /// 
    public void BuilderKeyboard(Keyboard keyboard)
    {
      computer.Keyboard = keyboard;
    }
    /// 
    /// 9.组装 鼠标
    /// 
    /// 
    public void BuilderMouse(Mouse mouse)
    {
      computer.Mouse = mouse;
    }
    #endregion
    /// 
    /// 获取组装后的电脑
    /// 
    /// 
    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
{
  /// 
  /// 电脑厂家,销售员指导 消费者 要购买那个 品牌 的电脑
  /// 
  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
  {
    /// 
    /// 电脑配置
    /// 
    public void ShowConfig()
    {
      Builder.GetComputer().ShowConfig();
    }
    /// 
    /// 制造商
    /// 
    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。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

31

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

9

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

32

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

1

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

3

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

23

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

51

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 7.8万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.7万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号