03.Builder生成器模式

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());
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值