设计模式--模版方法

定义:

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

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

关键词:

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 

你可能感兴趣的:(设计模式)