namespace _03_Builder
{
public abstract class House
{
}
public abstract class Door
{
}
public abstract class Wall
{
}
public abstract class Windows
{
}
public abstract class Floor
{
}
public abstract class HouseCeiling
{
}
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();
}
}
namespace House
{
public class GameManager
{
public static _03_Builder.House CreateHouse(_03_Builder.Builder builder)
{
builder.BuildDoor();
builder.BuildDoor();
builder.BuildWall();
builder.BuildWall();
builder.BuildWindows();
builder.BuildWindows();
builder.BuildFloor();
builder.BuildHouseCeiling();
return builder.GetHouse();
}
}
}
namespace NameRomanHouse
{
public class RomanHouse : _03_Builder.House
{
}
public class RomanDoor : _03_Builder.Door
{
}
public class RomanWall : _03_Builder.Wall
{
}
public class RomanWindows : _03_Builder.Windows
{
}
public class RomanFloor : _03_Builder.Floor
{
}
public class RomanHouseCeiling : _03_Builder.HouseCeiling
{
}
public class RomanHouseBuilder : _03_Builder.Builder
{
public override void BuildDoor()
{
_03_Builder.Door romanDoor = new RomanDoor();
}
public override void BuildFloor()
{
_03_Builder.Floor romanFloor = new RomanFloor();
}
public override void BuildHouseCeiling()
{
_03_Builder.HouseCeiling romanHouseCeiling = new RomanHouseCeiling();
}
public override void BuildWall()
{
_03_Builder.Wall romanWall = new RomanWall();
}
public override void BuildWindows()
{
_03_Builder.Windows romanWindows = new RomanWindows();
}
public override _03_Builder.House GetHouse()
{
return new RomanHouse();
}
}
}
namespace Click
{
internal class Program
{
static void Main(string[] args)
{
//string assemblyName = ConfigurationSetting["BuilderAssembly"];
//string builderName = ConfigurationSetting["BuilderClass"];
string assemblyName = "";
string builderName = "";
System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(assemblyName);
Type t = assembly.GetType(builderName);
_03_Builder.Builder builder = (_03_Builder.Builder)Activator.CreateInstance(t);
_03_Builder.House house = House.GameManager.CreateHouse(builder);
//_03_Builder.House house = House.GameManager.CreateHouse(new NameRomanHouse.RomanHouseBuilder());
}
}
}
03.Builder生成器模式
于 2022-04-16 14:13:20 首次发布