zoukankan      html  css  js  c++  java
  • 01.策略模式-上篇

    原文地址:01.策略模式-上篇

    概述:

    策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

    1.定义飞行行为接口

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 策略模式
    {
        public interface IFlyBehavior
        {
            void Fly();
        }
    }

    2.定义飞行行为,继承飞行行为接口

    (1)FlyNoWay不会飞

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 策略模式
    {
        public class FlyNoWay:IFlyBehavior
        {
            public void Fly()
            {
                Console.WriteLine("I can't fly");
            }
        }
    }

    (2)FlyWithWings会飞,用翅膀

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 策略模式
    {
        public class FlyWithWings:IFlyBehavior
        {
    
            public void Fly()
            {
                Console.WriteLine("I'm flying!!");
            }
        }
    }

    3.定义绿头鸭MallarDuck,继承Duck类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 策略模式
    {
        public class MallarDuck:Duck
        {
            public MallarDuck()
            {
                base.iFlyBehavior = new FlyWithWings();
            }
    
            public override void Display()
            {
                Console.WriteLine("I'm a real Mallard duck");
            }
        }
    }

    4.主程序

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Security.Cryptography.X509Certificates;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 策略模式
    {
        class Program
        {
            static void Main(string[] args)
            {
                Duck mallarDuck = new MallarDuck();
                mallarDuck.PerformFly();
                Console.ReadKey();
            }
        }
    }

    5.源代码下载

        【设计模式】01.策略模式-上篇.zip

  • 相关阅读:
    ThinPHP v5.x安装初始化配置(项目实战)
    Bresenham快速画直线算法
    arm笔记之MOV
    Blackfin DSP的C语言优化之Circular Buffer
    Visual DSP定点数(fract)使用指南
    全局二值化
    Blackfin DSP学习心得与参考资料
    Linux网络配置
    一般方程与参数方程求直线交点
    一个改进的快速排序实现
  • 原文地址:https://www.cnblogs.com/jackson0714/p/4827352.html
Copyright © 2011-2022 走看看