策略模式的实现

来源:互联网 发布:mac转换视频格式软件 编辑:程序博客网 时间:2024/05/17 02:45
   class Program
    
{
        
static void Main(string[] args)
        
{
            Duck duck 
= new MiniDuck();
            duck.fly();
            FlyBehavior Fly 
= new FlyRocketPowered();
            duck.SetFlyBehavior
=Fly;
            duck.fly();
        }

    }



    
public abstract   class Duck 
    
{
        
public FlyBehavior flyBehavior;
        
public void fly()
        
{
            flyBehavior.fly();
        }

        
public FlyBehavior SetFlyBehavior
        
{
            
set 
            
{
                
this.flyBehavior = value;
            }

        }

    }


    
public class MiniDuck:Duck
    
{
        
public MiniDuck()        
        
{
            
this.flyBehavior = new FlyWithWing();
        }

    }


    
/// <summary>
    
/// 飞行的接口申明
    
/// </summary>

    public interface  FlyBehavior 
    
{
         
void fly();
    }


    
/// <summary>
    
/// 实现飞行的接口
    
/// </summary>

    public class FlyWithWing : FlyBehavior 
    
{
        
public void fly() 
        
{
            Console.Write(
"我是能飞的");
        }

    }


    
public class FlyRocketPowered : FlyBehavior 
    
{
        
public void fly() 
        
{
            Console.Write(
"有火箭带也能飞");
        }

    }
原创粉丝点击