(29)C#设计模式——模板方法

当我们去银行存钱的时候,银行会给你一张存款单,这张存款单就是一个模板,把一些公共的内容提取出来,留下部分内容让用户来填写。在软件系统中,将多个类的共有内容提取到一个模板中的思想就是模板方法模式的思想。

模板方法模式就是基于代码复用技术,在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法放在不同的子类中。

在模板方法模式中,需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数形式实现,然后声明一些抽象方法来让子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法。

定义

定义以一个操作算法中的骨架,将这些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

实例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _9TempaleMethod
{
    //测试类
    class Program
    {
        static void Main(string[] args)
        {
            Spinach sponach = new Spinach("菠菜");
            sponach.Way();
            Console.WriteLine();
            Cabage cabage = new Cabage("大白菜");
            cabage.Way();
        }
    }
    //定义抽象类Vegetable
    public abstract class Vegetable
    {
        private string _name;
        public Vegetable(string Name):base()
        {
            this._name = Name;
        }
        //定义炒蔬菜的一般做法,其中将第三部定义为抽象方法,由具体的子类去实现
        public  void Way()
        {
            Console.WriteLine("炒{0}的一般做法:",this._name);
            this.Pouroil();
            this.Heatoil();
            this.pourVegetable();
            this.fry();
        }
      
        public void Pouroil()
        {
            Console.WriteLine("倒油");
        }
        public void Heatoil()
        {
            Console.WriteLine("把油烧热");
        }
        public abstract void pourVegetable();
        public void fry()
        {
            Console.WriteLine("翻炒");
        }
       
    }
    //实现模板方法中的pourVegetable方法
    public class Spinach : Vegetable
    {
        public Spinach(string Name) : base(Name)
        {
            
        }

        public override void pourVegetable()
        {
            Console.WriteLine("把菠菜倒进锅里");
        }
    }
    实现模板方法中的pourVegetable方法
    public class Cabage : Vegetable
    {
        public Cabage(string Name) : base(Name)
        {

        }

        public override void pourVegetable()
        {
            Console.WriteLine("把大白菜倒进锅里");
        }
    }
}
/*output:
炒菠菜的一般做法:
倒油
把油烧热
把菠菜倒进锅里
翻炒

炒大白菜的一般做法:
倒油
把油烧热
把大白菜倒进锅里
翻炒
*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值