Пример #1
0
        private static void Main(string[] args)
        {
            var sedanCar = new Sedan();

            Vehicle.ToString("Honda", "Accord");
            sedanCar.ApplyBrake(); // This will invoke class "Brake"

            var suvCar = new SportUtility();

            Vehicle.ToString("Toyota", "Four Runner");
            suvCar.ApplyBrake(); // This will invoke class "BrakeWithABS"

            // set brake behavior dynamically
            suvCar.SetBrakeBehavior(new StandardBrake());
            suvCar.ApplyBrake(); // This will invoke class "Brake"

            var semiTruck = new Truck();

            Vehicle.ToString("Kenworth", "Roadrunner");
            semiTruck.ApplyBrake(); // this will invoke class "BrakeWithAir"

            // set the brake behavior from the constructor
            var pickup = new Truck(new BrakeWithAbs());

            Vehicle.ToString("Ford", "F150");
            pickup.ApplyBrake(); // this will invoke class "BrakeWithABS"
            pickup.SetBrakeBehavior(new BrakeWithAir());

            var hybrid = new Sedan(new BadBrake());

            Vehicle.ToString("Toyota", "Prius");
            hybrid.ApplyBrake(); //this will invoke class "BadBrake"
            hybrid.SetBrakeBehavior(new BrakeWithAbs());
            hybrid.ApplyBrake(); // this will invoke class "BrakeWithABS"

            Console.ReadLine();
        }