posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
最基本的模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public abstract class EverydayLife
    {
        public virtual void EatFood()
        {
            Console.WriteLine("吃饭");
        }
        public abstract void DoWork();
        public virtual void Sleep()
        {
            Console.WriteLine("睡觉");
        }
        //模板方法,规定好执行顺序,子类可以不必重写EatFood()和Sleep(),
        //但每个人的工作不同,实现自己的DoWork()
        public void TempMethod()
        {
            EatFood();
            DoWork();
            Sleep();
        }
    }
    public class MyEverydayLife : EverydayLife {
        public override void EatFood()
        {
            Console.WriteLine("吃软饭");
        }
        public override void DoWork() {
            Console.WriteLine("上班摸鱼");
        }
        public override void Sleep()
        {
            Console.WriteLine("睡懒觉");
        }
    }

1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
3.控制子类扩展。模板方法只在特定点调用“Hook”操作,这样就只允许在这些点进行扩展。

posted on   邢帅杰  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2021-07-06 sql删除所有主外键
2021-07-06 java读取properties配置文件
2021-07-06 java反射静态代理和动态代理
2017-07-06 MySql中循环的使用
2016-07-06 redis安装
点击右上角即可分享
微信分享提示