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();
     
    			
                
            }
        }
    }
  • 相关阅读:
    小酌一下:pipenv 基本用法
    sql2008使用您对无法重新创建的表进行了更改或者启用了“阻止保存重新创建表的更改”
    Join操作基本:外连接、自然连接、内连接
    用dataReader获取datetime类型完整精度的时间字串
    c# MesageBox
    判断当前时间是否在一个时间段内
    c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
    sql Convert函数
    c# MD5方法总结
    wml跳转
  • 原文地址:https://www.cnblogs.com/vihone/p/3220389.html
Copyright © 2011-2022 走看看