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

  • 相关阅读:
    【ES6】函数的扩展
    NSFileManger使用介绍
    委托,曾将让我头疼难以理解
    【HDOJ】1914 The Stable Marriage Problem
    MySQL修改配置优化插入性能
    MySQL配置文件的编码问题
    MyBatis批量更新时提示"You have an error in your SQL syntax"
    MyBatis批量更新返回受影响数
    log4j.properties配置说明
    删除Win10的OneDrive
  • 原文地址:https://www.cnblogs.com/jackson0714/p/4827352.html
Copyright © 2011-2022 走看看