Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Strategy
- {
- class Program
- {
- static void Main(string[] args)
- {
- RedHeadDuck redHead = new RedHeadDuck();
- redHead.Start();
- Console.WriteLine();
- MallardDuck mallardDuck = new MallardDuck();
- mallardDuck.Start();
- Console.WriteLine();
- RubberDuck rubberDuck = new RubberDuck();
- rubberDuck.Start();
- Console.WriteLine();
- ModelDuck modelDuck = new ModelDuck();
- modelDuck.SetFlyBeahaviour(new FlyRocket());
- modelDuck.Start();
- Console.WriteLine();
- Console.ReadKey();
- }
- }
- class ModelDuck : Duck
- {
- public ModelDuck()
- {
- _quackBehaviour = new MuteQuackable();
- _flyBehaviour = new FlyNoWings();
- }
- public override void Display()
- {
- Console.Write("Я деревянный утк! ");
- }
- }
- class RubberDuck : Duck
- {
- public RubberDuck()
- {
- _quackBehaviour = new Squeakable();
- _flyBehaviour = new FlyNoWings();
- }
- public override void Display()
- {
- Console.Write("Я RubberDuck! ");
- }
- }
- class RedHeadDuck : Duck
- {
- public RedHeadDuck()
- {
- _quackBehaviour = new Quackable();
- _flyBehaviour = new FlyWithWings();
- }
- public override void Display()
- {
- Console.Write("Я RedHeadDuck! ");
- }
- }
- class MallardDuck : Duck
- {
- public MallardDuck()
- {
- _quackBehaviour = new Quackable();
- _flyBehaviour = new FlyWithWings();
- }
- public override void Display()
- {
- Console.Write("Я MallardDuck! ");
- }
- }
- interface IFlyBehaviour
- {
- void Fly();
- }
- interface IQuackBehaviour
- {
- void Quack();
- }
- class FlyWithWings : IFlyBehaviour
- {
- public void Fly()
- {
- Console.Write("Взлетаюю) ");
- }
- }
- class FlyNoWings : IFlyBehaviour
- {
- public void Fly()
- {
- Console.Write("А я летать не умею( ");
- }
- }
- class FlyRocket : IFlyBehaviour
- {
- public void Fly()
- {
- Console.Write("Ракеткой вперед!!! ");
- }
- }
- class Quackable : IQuackBehaviour
- {
- public void Quack()
- {
- Console.Write("Кряяя! ");
- }
- }
- class Squeakable : IQuackBehaviour
- {
- public void Quack()
- {
- Console.Write("Пиии! ");
- }
- }
- class MuteQuackable : IQuackBehaviour
- {
- public void Quack()
- {
- }
- }
- abstract class Duck
- {
- protected IQuackBehaviour _quackBehaviour;
- protected IFlyBehaviour _flyBehaviour;
- public void Start()
- {
- Display();
- PerfornQuack();
- Swim();
- PerformFly();
- }
- public abstract void Display();
- public void Swim()
- {
- Console.Write("Я пополыл... ");
- }
- public void PerfornQuack()
- {
- _quackBehaviour.Quack();
- }
- public void PerformFly()
- {
- _flyBehaviour.Fly();
- }
- public void SetFlyBeahaviour(IFlyBehaviour flyBehaviour)
- {
- _flyBehaviour = flyBehaviour;
- }
- public void SetQuackBehaviour(IQuackBehaviour quackBehaviour)
- {
- _quackBehaviour = quackBehaviour;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment