Building生成器
Builder类:
builder
abstract class House
{
}
public abstract class Builder
{
public abstract void BuildDoor();
public abstract void BuildWall();
public abstract void BuildWindows();
public abstract void BuildFloor();
public abstract void BuildHouseCeiling();
public abstract House GetHouse();
}
public class GameManager //实现在另外一个类
//相对来说是项目中最稳定的部分
{
public static House CreateHouse(Builder builder)
{
builder.BuildDoor();
builder.BuildDoor();
builder.BuildWindows();
builder.BuildWindows();
builder.BuildWall();
builder.BuildWall();
builder.BuildFloor();
builder.BuildHouseCeiling();
return builder.GetHouse();
}
}
abstract class House
{
}
public abstract class Builder
{
public abstract void BuildDoor();
public abstract void BuildWall();
public abstract void BuildWindows();
public abstract void BuildFloor();
public abstract void BuildHouseCeiling();
public abstract House GetHouse();
}
public class GameManager //实现在另外一个类
//相对来说是项目中最稳定的部分
{
public static House CreateHouse(Builder builder)
{
builder.BuildDoor();
builder.BuildDoor();
builder.BuildWindows();
builder.BuildWindows();
builder.BuildWall();
builder.BuildWall();
builder.BuildFloor();
builder.BuildHouseCeiling();
return builder.GetHouse();
}
}
其中一种风格房间的具体方法:
RomanHouserBuilder
public class RomoHouser : House
{
}
public abstract class Door
{
}
public abstract class Wall
{
}
public abstract class Windows
{
}
public abstract class Floor
{
}
public abstract class HouseCeiling
{
}
public class RomoHouseBuilder : Builder
{
public override void BuildDoor()
{
throw new System.NotImplementedException();
}
public override void BuildWall()
{
throw new System.NotImplementedException();
}
public override void BuildWindows()
{
throw new System.NotImplementedException();
}
public override void BuildFloor()
{
throw new System.NotImplementedException();
}
public override void BuildHouseCeiling()
{
throw new System.NotImplementedException();
}
public override House GetHouse()
{
}
}
public class RomoHouser : House
{
}
public abstract class Door
{
}
public abstract class Wall
{
}
public abstract class Windows
{
}
public abstract class Floor
{
}
public abstract class HouseCeiling
{
}
public class RomoHouseBuilder : Builder
{
public override void BuildDoor()
{
throw new System.NotImplementedException();
}
public override void BuildWall()
{
throw new System.NotImplementedException();
}
public override void BuildWindows()
{
throw new System.NotImplementedException();
}
public override void BuildFloor()
{
throw new System.NotImplementedException();
}
public override void BuildHouseCeiling()
{
throw new System.NotImplementedException();
}
public override House GetHouse()
{
}
}
客户程序调用:
client
using System.Reflection;
using System;
using System.Configuration;
class App
{
House hourse = GameManager.CreateHouse(new RomoHouseBuilder());
public static void Main()
{
string builderName = ConfigurationSettings["BuilderClass"];
string assemblyName = ConfigurationSettings["BuilderClass"];
Assembly assembly = Assembly.Load(assemblyName);
Type t = assembly.GetType(BuilderName);
Builder bb = Activator.CreateInstance();
}
}
using System.Reflection;
using System;
using System.Configuration;
class App
{
House hourse = GameManager.CreateHouse(new RomoHouseBuilder());
public static void Main()
{
string builderName = ConfigurationSettings["BuilderClass"];
string assemblyName = ConfigurationSettings["BuilderClass"];
Assembly assembly = Assembly.Load(assemblyName);
Type t = assembly.GetType(BuilderName);
Builder bb = Activator.CreateInstance();
}
}