模板方法

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。因此模板方法使得子类可以在不改变一个算法的结构的情况下重新定义该算法的某些特定变量。优点:把不变行为搬移到超类,去除子类中的重复代码。

C#实现

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

namespace ConsoleApplication15
{
    abstract class abstractTemplateMethod
    {
        public abstract void Method1();
        public abstract void Method2();

        public void Handle()
        {
            Method1();
            Method2();
        }
    }

    class ContreteMethodA : abstractTemplateMethod
    {
        public override void Method1()
        {
            Console.WriteLine("MethodA-1");
        }
        public override void Method2()
        {
            Console.WriteLine("MethodA-2");
        }
    }

    class ContreteMethodB : abstractTemplateMethod
    {
        public override void Method1()
        {
            Console.WriteLine("MethodB-1");
        }
        public override void Method2()
        {
            Console.WriteLine("MethodB-2");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            abstractTemplateMethod atm = new ContreteMethodA();
            atm.Handle();
            abstractTemplateMethod atm1 = new ContreteMethodB();
            atm1.Handle();
            Console.Read();
        }
    }
}
python实现

class abstractTemplateMethod:

    def __init__(self):
        pass
    
    def Handle(self):
        print (self.Method1())
        print (self.Method2())

    def Method1(self):
        return none

    def Method2(self):
        return none

class ContreteMethodA(abstractTemplateMethod):
    def Method1(self):
        return 'MethodA-1'

    def Method2(self):
        return 'MethodA-2'

class ContreteMethodB(abstractTemplateMethod):
    def Method1(self):
        return 'MethodB-1'

    def Method2(self):
        return 'MethodB-2'

atm = ContreteMethodA();
atm.Handle()

atm1 = ContreteMethodB();
atm1.Handle()



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值