zoukankan      html  css  js  c++  java
  • 1.策略模式

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
     
    namespace DesignPattern._1.StrategyPattern
    {
        public abstract class Duck
        {
            public IFlyBehavior flyBehavior = null;
            public IQuackBehavior quackBehavior = null;
     
            public Duck(){}
     
            public abstract void display();
     
            public void performFly()
            {
                flyBehavior.fly();
            }
     
            public void performQuack()
            {
                quackBehavior.quack();
            }
     
            public void swim()
            {
                Console.WriteLine("All ducks float, even decoys");
            }
     
            public void setFlyBehavior(IFlyBehavior fb)
            {
                flyBehavior = fb;
            }
     
            public void SetQuackBehavior(IQuackBehavior qb)
            {
                quackBehavior = qb;
            }
        }
     
        public class MallardDuck : Duck
        {
            public MallardDuck()
            {
                flyBehavior = new FlyWithWings();
                quackBehavior = new Quack();
            }
     
            public override void display()
            {
                Console.WriteLine("I'm a real Mallard Duck");
            }
     
        }
     
     
        public interface IFlyBehavior
        {
             void fly();
        }
     
        public class FlyWithWings : IFlyBehavior
        {
            public void fly()
            {
                Console.WriteLine("I'm flying");
            }
        }
     
        public class FlyNoWay : IFlyBehavior
        {
            public void fly()
            {
                Console.WriteLine("I can't fly");
            }
        }
     
     
        public interface IQuackBehavior
        {
            void quack();
        }
     
        public class Quack: IQuackBehavior
        {
            public void quack()
            {
                Console.WriteLine("Quack");
            }
        }
     
        public class MuteQuack:IQuackBehavior
        {
            public void quack()
            {
                Console.WriteLine("<<Silence>>");
            }
        }
     
        public class Sqleak:IQuackBehavior
        {
            public void quack()
            {
                Console.WriteLine("Squeak");
            }
        }
     
        public class ModelDuck : Duck
        {
            public ModelDuck()
            {
                flyBehavior = new FlyNoWay();
                quackBehavior = new Quack();
            }
     
            public override void display()
            {
                Console.WriteLine("I'm a model duck");
            }
        }
     
        public class FlyRockekPowered:IFlyBehavior
        {
            public void fly()
            {
                Console.WriteLine("I'm flying with a rocket!");
            }
        }
     
        public class StragegyPatternTestClass
        {
            public StragegyPatternTestClass()
            {
                Duck mallard = new MallardDuck();
                mallard.performQuack();
                mallard.performFly();
     
                Duck model = new ModelDuck();
                model.performFly();
     
                model.setFlyBehavior(new FlyRockekPowered());
                model.performFly();
            }
     
        }
    }
    


    namespace DesignPattern
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1. Stragegy Pattern
                new StragegyPatternTestClass();//StragegyPattern
     
     
     
                System.Console.Read();
     
    			
                
            }
        }
    }
  • 相关阅读:
    375D.Tree and Queries(树上启发式合并+离线)
    600E.Lomsat gelral (树上启发式合并)
    741D.Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(树上启发式合并+状压)
    Nowcoder13249.黑白树(树形DP)
    Nowcoder51179.选课(树形背包)
    Nowcoder20811.蓝魔法师(树形背包)
    Nowcoder19782.Tree(树形DP+逆元)
    Gym102292M.Monster Hunter(树形背包+滚动数组)
    大数据运维(61)Linux环境安装PostgreSQL-10.1
    大数据运维(60)Hive on Spark配置
  • 原文地址:https://www.cnblogs.com/vihone/p/3220389.html
Copyright © 2011-2022 走看看