对于生成器模式我这里以生产自行车为例进行讲解,自行车由车轮与车架组成,由不同样式的车轮与不同样式的车架就可以组装成不同的自行车(如赛车,山地车等),下面的程式进行说明:


学习设计模式之生成器(Builder Pattern)模式    public struct Bike
{
学习设计模式之生成器(Builder Pattern)模式        
private string bikeWheel;
学习设计模式之生成器(Builder Pattern)模式        
private string bikeFrame;
学习设计模式之生成器(Builder Pattern)模式        
public Bike(string wheel,string frame)
{
学习设计模式之生成器(Builder Pattern)模式            
this.bikeWheel = wheel;
学习设计模式之生成器(Builder Pattern)模式            
this.bikeFrame = frame;
学习设计模式之生成器(Builder Pattern)模式        }

学习设计模式之生成器(Builder Pattern)模式        
public string GetBike
{
学习设计模式之生成器(Builder Pattern)模式            
get
{
学习设计模式之生成器(Builder Pattern)模式                
return bikeWheel + bikeFrame;
学习设计模式之生成器(Builder Pattern)模式            }

学习设计模式之生成器(Builder Pattern)模式        }

学习设计模式之生成器(Builder Pattern)模式    }


学习设计模式之生成器(Builder Pattern)模式    public interface MainInterface    
{
学习设计模式之生成器(Builder Pattern)模式        
void CreateWheel(string bikeType);
学习设计模式之生成器(Builder Pattern)模式        
void CreateFrame(string bikeType);
学习设计模式之生成器(Builder Pattern)模式
学习设计模式之生成器(Builder Pattern)模式        Bike GetBike();
学习设计模式之生成器(Builder Pattern)模式    }


学习设计模式之生成器(Builder Pattern)模式    public class ConcreteClass : MainInterface
{
学习设计模式之生成器(Builder Pattern)模式        
string wheel;
学习设计模式之生成器(Builder Pattern)模式        
string frame;

学习设计模式之生成器(Builder Pattern)模式        public void CreateWheel(string bikeType)
{
学习设计模式之生成器(Builder Pattern)模式            
switch(bikeType)
{
学习设计模式之生成器(Builder Pattern)模式                
case "山地車":
学习设计模式之生成器(Builder Pattern)模式                    wheel
="山地車的車輪為@@@";
学习设计模式之生成器(Builder Pattern)模式                    
break;
学习设计模式之生成器(Builder Pattern)模式                
case "賽車":
学习设计模式之生成器(Builder Pattern)模式                    wheel
="賽車的車輪為***";
学习设计模式之生成器(Builder Pattern)模式                    
break;
学习设计模式之生成器(Builder Pattern)模式            }

学习设计模式之生成器(Builder Pattern)模式        }


学习设计模式之生成器(Builder Pattern)模式        public void CreateFrame(string bikeType)
{
学习设计模式之生成器(Builder Pattern)模式            
switch(bikeType)
{
学习设计模式之生成器(Builder Pattern)模式                
case "山地車":
学习设计模式之生成器(Builder Pattern)模式                    frame
="山地車的車架為^^^";
学习设计模式之生成器(Builder Pattern)模式                    
break;
学习设计模式之生成器(Builder Pattern)模式                
case "賽車":
学习设计模式之生成器(Builder Pattern)模式                    frame
="賽車的車架為+++";
学习设计模式之生成器(Builder Pattern)模式                    
break;
学习设计模式之生成器(Builder Pattern)模式            }

学习设计模式之生成器(Builder Pattern)模式        }


学习设计模式之生成器(Builder Pattern)模式        public Bike GetBike()
{
学习设计模式之生成器(Builder Pattern)模式            
return new Bike(wheel,frame);
学习设计模式之生成器(Builder Pattern)模式        }

学习设计模式之生成器(Builder Pattern)模式    }

学习设计模式之生成器(Builder Pattern)模式

学习设计模式之生成器(Builder Pattern)模式    public class CreateBike
{
学习设计模式之生成器(Builder Pattern)模式        
private MainInterface objMain;
学习设计模式之生成器(Builder Pattern)模式        
private string bikeType;
学习设计模式之生成器(Builder Pattern)模式        
public CreateBike(MainInterface objMain,string bikeType)
{
学习设计模式之生成器(Builder Pattern)模式            
this.objMain = objMain;
学习设计模式之生成器(Builder Pattern)模式            
this.bikeType = bikeType;
学习设计模式之生成器(Builder Pattern)模式        }

学习设计模式之生成器(Builder Pattern)模式        
public void Create()
{
学习设计模式之生成器(Builder Pattern)模式            objMain.CreateWheel(bikeType);
学习设计模式之生成器(Builder Pattern)模式            objMain.CreateFrame(bikeType);
学习设计模式之生成器(Builder Pattern)模式        }

学习设计模式之生成器(Builder Pattern)模式    }
下面來看看調用:
学习设计模式之生成器(Builder Pattern)模式string bikeType="山地車";
学习设计模式之生成器(Builder Pattern)模式            ConcreteClass objCon 
= new ConcreteClass();
学习设计模式之生成器(Builder Pattern)模式            CreateBike objCB 
= new CreateBike(objCon,bikeType);
学习设计模式之生成器(Builder Pattern)模式            objCB.Create();
学习设计模式之生成器(Builder Pattern)模式            Bike objB 
= objCon.GetBike();
学习设计模式之生成器(Builder Pattern)模式            Response.Write(objB.GetBike);
下面来比较抽象工厂模式与生成器模式的区别:
以生产自行车为例,抽象工厂模式获得的是不同名牌的自行车而不管自行车是由什么部件组装而成的;而生成器模式获得是不同样式的自行车,所关心的是自行车组成部件的构成.所以看出抽象工厂模式获得是一系列相关的类(如凤凰牌自行车,XX牌自车等)而生成器模式获得的是提供给它数据(如上例中的“山地车“)一步一步构建的一个复杂的对象(即山地车)

相关文章: