Ejemplo n.º 1
0
        // Optional parameter usage
        public Duck(IQuackStrategy quackStrategy = null)
        {
            // Duck depends on IQuackSelecctor which is a factory
            // Determines which (Strategy) animal to inject
            // Note how quack selection decoupled from Duck class
            // Change quackStrategy types without modifying Duck.
            IQuackSelector quackSelector = new QuackSelector();

            // If parameter not passed, set default quackStrategy to Duck
            // Note usage of null-coalescing operator
            QuackSound = quackStrategy ?? quackSelector.SetAnimal(QuackBehaviorEnum.Duck);
        }
Ejemplo n.º 2
0
        public IQuackStrategy SetAnimal(QuackBehaviorEnum quackBehaviorEnum)
        {
            switch (quackBehaviorEnum)
            {
            case QuackBehaviorEnum.Bird:
                QuackStrategySound = new BirdQuackStrategy();
                break;

            case QuackBehaviorEnum.Duck:
                QuackStrategySound = new DuckQuackStrategy();
                break;

            case QuackBehaviorEnum.Cat:
                QuackStrategySound = new CatQuackStrategy();
                break;

            case QuackBehaviorEnum.Dog:
                QuackStrategySound = new DogQuackStrategy();
                break;

            case QuackBehaviorEnum.Lion:
                QuackStrategySound = new LionQuackStrategy();
                break;

            case QuackBehaviorEnum.Mouse:
                QuackStrategySound = new MouseQuackStrategy();
                break;

            // Add new quackStrategy
            //case QuackBehaviorEnum.Sheep:
            //    QuackStrategySound = new SheepQuackStrategy();
            //    break;

            default:
                QuackStrategySound = new DuckQuackStrategy();
                break;
            }

            return(QuackStrategySound);
        }
Ejemplo n.º 3
0
 public SmallDuck(IFlyStrategy flyStrategy, IQuackStrategy quackStrategy) : base(flyStrategy, quackStrategy)
 {
 }
Ejemplo n.º 4
0
 public void ChangeQuackStrategy(IQuackStrategy quackStrategy)
 {
     _quackStrategy = quackStrategy;
 }
Ejemplo n.º 5
0
 protected Duck(IQuackStrategy quackStrategy, IEatStrategy eatStrategy)
 {
     _quackStrategy = quackStrategy;
     _eatStrategy   = eatStrategy;
 }
Ejemplo n.º 6
0
 public void SetQuackStrategy(IQuackStrategy quackStrategy)
 {
     _quackStrategy = quackStrategy;
 }
Ejemplo n.º 7
0
 public Duck(IFlyStrategy flyStrategy, IQuackStrategy quackStrategy)
 {
     _flyStrategy   = flyStrategy;
     _quackStrategy = quackStrategy;
 }
Ejemplo n.º 8
0
 public ModelDuck(IFlyStrategy flyStrategy, IQuackStrategy quackStrategy)
 {
     this.flyStrategy   = flyStrategy;
     this.quackStrategy = quackStrategy;
 }
Ejemplo n.º 9
0
 public WildDuck(IFlyStrategy flyStrategy, IQuackStrategy quackStrategy) : base(flyStrategy, quackStrategy)
 {
 }
Ejemplo n.º 10
0
 public Duck()
 {
     this.flyStrategy   = new WingFlyStrategy();
     this.quackStrategy = new NormalQuackStrategy();
 }
Ejemplo n.º 11
0
 public Duck(IFlyStrategy flyStrategy, IQuackStrategy quackStrategy)
 {
     this._flyStrategy   = flyStrategy;
     this._quackStrategy = quackStrategy;
 }