帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

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#程序设计有所帮助。

原文链接:http://www.cnblogs.com/HCCZX/archive/2012/08/08/2628452.html

dy(“nrwz”);

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《C#设计模式之Builder生成器模式解决带老婆配置电脑问题实例》
文章链接:https://www.admin99.cn/7539
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册