usingSystem;usingSystem.Collections.Generic;namespaceconsoleapplication4{classProgram {/// <summary> ///to assemble a computer as an example///The composition of each computer is consistent, but using the same build process can create different representations (that can be assembled into dissimilar computers, the configuration is not the same)///This scenario of assembling a computer can be used to design a builder model/// </summary> /// <param name= "args" ></param> Static voidMain (string[] args) { //customers find computer City boss said to buy a computer, here to install two computers//Create a leader and a constructorDirector Director =NewDirector (); Builder B1=NewConcreteBuilder1 (); Builder B2=NewConcreteBuilder2 (); //The boss asked the staff to assemble the first computer.Director. Construct (B1); //Assembled , assembled and assembled.Computer Computer1 =B1. Getcomputer (); Computer1. Show (); //The boss asked the staff to assemble the second computer.Director. Construct (B2); Computer Computer2=B2. Getcomputer (); Computer2. Show (); Console.read (); } /// <summary> ///the conductor in the builder model/// </summary> Public classDirector {//assembling a computer Public voidConstruct (builder builder) {Builder. Buildpartcpu (); Builder. Buildpartmainboard (); } } /// <summary> ///Customer/// </summary> Public classComputer {/// <summary> ///Computer Parts/// </summary> Privateilist<string> parts =Newlist<string>(); /// <summary> ///Add a part/// </summary> /// <param name= "part" ></param> Public voidADD (stringPart ) {Parts. ADD (part); } Public voidShow () {Console.WriteLine ("the computer begins to assemble ...."); foreach(varPinchparts) {Console.WriteLine ("Add"+p+"Components"); } Console.WriteLine ("Computer Assembly Complete"); } } /// <summary> ///Abstract Builder, this scenario is "assembler", which can also be defined as an interface ./// </summary> Public Abstract classBuilder {//Install CPU Public Abstract voidbuildpartcpu (); //Installed motherboard Public Abstract voidBuildpartmainboard (); //Of course there are components such as hard drives, power supplies and so on, omitted here//get the assembled computer Public Abstractcomputer Getcomputer (); } /// <summary> ///Specific creator, specific to the specific creator, for example: Installed small King Ah/// </summary> Public classConcretebuilder1:builder {computer computer=Newcomputer (); Public Override voidbuildpartcpu () {computer. ADD ("CPU1"); } Public Override voidBuildpartmainboard () {computer. ADD ("Main Board1"); } Public OverrideComputer Getcomputer () {returncomputer; } } /// <summary> ///Specific creator, specific to the specific creator, for example: Installed Xiao Li Ah///it's another computer./// </summary> Public classConcretebuilder2:builder {computer computer=Newcomputer (); Public Override voidbuildpartcpu () {computer. ADD ("CPU2"); } Public Override voidBuildpartmainboard () {computer. ADD ("Main Board2"); } Public OverrideComputer Getcomputer () {returncomputer; } } }}
5. Builder pattern