示例#1
0
 public void BuildLumina(Sedan sedan)
 {
     sedan.FrontDoors = new FrontDoors();
     sedan.Engine     = new Engine();
     sedan.BackDoors  = new BackDoors();
     sedan.Childseat  = new ChildSeat();
 }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Lets Make Vehicles");


            SportsCar   tesla       = new SportsCar();
            Sedan       lumina      = new Sedan();
            PickUp      f150        = new PickUp();
            Semi        mack        = new Semi();
            Gas         gas         = new Gas();
            Electricity electricity = new Electricity();
            Diesel      diesel      = new Diesel();

            var teslaFactory  = new TeslaFactory();
            var luminaFactory = new LuminaFactory();
            var f150Factory   = new F150Factory();
            var mackFactory   = new MackFactory();

            // if you're building a factory this makes sense, you let the door factory make the doors.
            teslaFactory.BuildTesla(tesla);
            luminaFactory.BuildLumina(lumina);
            f150Factory.BuildF150(f150);
            mackFactory.BuildMack(mack);


            // first method, but is it this main method's responsibility to make this?
            //tesla.FrontDoors = new FrontDoors();

            tesla.FrontDoors.FrontDoorsOpen();
            tesla.FrontDoors.FrontDoorsClose();
            tesla.Engine.Go(electricity);
            tesla.Turbo.GoFast();

            lumina.FrontDoors.FrontDoorsOpen();
            lumina.FrontDoors.FrontDoorsClose();
            lumina.BackDoors.BackDoorsOpen();
            lumina.Childseat.ProtectChild();
            lumina.BackDoors.BackDoorsClose();
            lumina.Engine.Go(gas);
            lumina.BackDoors.BackDoorsOpen();
            lumina.Childseat.ProtectChild();
            lumina.BackDoors.BackDoorsClose();

            f150.Bed.Fill();
            f150.FrontDoors.FrontDoorsOpen();
            f150.FrontDoors.FrontDoorsClose();
            f150.Engine.Go(gas);
            f150.Bed.Empty();

            mack.Trailer.Fill();
            mack.FrontDoors.FrontDoorsOpen();
            mack.FrontDoors.FrontDoorsClose();
            mack.Engine.Go(diesel);
        }