zoukankan      html  css  js  c++  java
  • 设计模式模版方法

    定义:

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

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

    关键词:

    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 
  • 相关阅读:
    深度学习实战 Tricks
    Latex 琐碎
    Latex 琐碎
    数据网站(数据集的获取)、打分网站
    数据网站(数据集的获取)、打分网站
    matplotlib —— 添加文本信息(text)
    hdu 1506 Largest Rectangle in a Histogram
    poj2007
    OpenRisc-43-or1200的IF模块分析
    RHEL 6.4 安装svn和apache
  • 原文地址:https://www.cnblogs.com/oneword/p/1513370.html
Copyright © 2011-2022 走看看