码迷,mamicode.com
首页 > Windows程序 > 详细

C# - 设计模式 - 钩子模式

时间:2018-03-18 21:45:10      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:定义   href   color   comm   c#   控制   12px   pos   UNC   

钩子模式

问题场景

如何控制抽象类的行为?解决办法是靠钩子!抽象类公布一个虚方法,由子类自行决定是否重写它,抽象类以钩子做判定,如果返回真则执行某个方法,否则不执行。为什么钩子不能是抽象的,因为如果钩子是抽象的,那么子类都必须重写它,有些子类并不想重写它,所以钩子最好定义成虚的。

总结模式

抽象类中的钩子可以控制抽象类的算法流程

示例代码

public abstract class Drink
{
    public void GetDrink( )
    {
        if (IsAddLemo( ))
        {
            Console.WriteLine( "你的加柠檬的饮料做好了" );
        }
        else
        {
            Console.WriteLine( "你的饮料做好了" );
        }
    }
    //钩子方法,默认不加柠檬
    public virtual bool IsAddLemo( )
    {
        return false;
    }
}

public class Coffe : Drink
{

}

public class Tea : Drink
{
    public override bool IsAddLemo( )
    {
        return true;
    }
}

public class Programe
{
    static void Main( string[] args )
    {
        Drink coffe = new Coffe( );
        coffe.GetDrink( );

        Drink tea = new Tea( );
        tea.GetDrink( );
    }
}

  

C# - 设计模式目录

C# - 设计模式 - 钩子模式

标签:定义   href   color   comm   c#   控制   12px   pos   UNC   

原文地址:https://www.cnblogs.com/myrocknroll/p/8597342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!