设计模式模版方法

定义:

在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中.

模版方法可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤.

关键词:

Template

结构图:

image

应用场景:

当不变的行为和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现.我们通过模版方法模式把这些行为搬到单一的地方,这样就可以帮助子类摆脱重复的不变的行为.

例子:

类图:

image

代码:
public abstract class Shopping
{
	public Shopping()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}

    public void Buy()
    {
        GOTOShop();
        BuySome();
        GOBackHome();
    }

    protected void GOTOShop()
    {
        HttpContext.Current.Response.Write("去商店<br/>");
    }

    protected abstract void BuySome();

    protected void GOBackHome()
    {
        HttpContext.Current.Response.Write("回家<hr/>");
    }
}

public class BuyWindow : Shopping
{
    protected override void BuySome()
    {
        HttpContext.Current.Response.Write("买窗户<br/>");
    }
}

public class BuyDoor : Shopping
{
    protected override void BuySome()
    {
        HttpContext.Current.Response.Write("买门<br/>");
    }
}

 
页面调用:
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Shopping sp1 = new BuyWindow();
            sp1.Buy();

            Shopping sp2 = new BuyDoor();
            sp2.Buy();
        }
    }
 
效果:
image 
原文地址:https://www.cnblogs.com/oneword/p/1513370.html