C++设计模式之模板方法模式(TemplateMethod)

2025-05-27 0 97

模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现。

作用

模板方法中定义了具体操作中所使用算法的各个步骤,并将其实现交由子类完成,从而实现多种不同的功能;

类视图

C++设计模式之模板方法模式(TemplateMethod)

实现

?

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

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65
class Lunch

{

public:

Lunch(){}

virtual ~Lunch(){}

void feed()

{

cooking();

eating();

cleaning();

}

virtual void cooking()=0;

virtual void eating()

{

cout<<"I am eating,Please don't disturb me\\n";

}

virtual void cleaning();

};

class MCMeal : public Lunch

{

public:

MCMeal(){}

virtual ~MCMeal(){}

void cooking()

{

cout<< "I am cooking Mc Meal\\n";

}

void cleaning()

{

cout<< "I am cleaning Mc plates";

}

};

class KFCMeal : public Lunch

{

public:

KFCMeal() {}

virtual ~KFCMeal(){}

void cooking()

{

cout<< "I am cooking KFC Meal\\n";

}

void eating

{

cout<< "KFC Meal is good\\n";

}

void cleaning()

{

cout<< "I am cleaning KFC plates and cups\\n";

}

};

int main()

{

Lunch* meal1 = new McMeal();

meal1.feed();

Lunch* meal2 = new KFCMeal();

meal2.feed();

}

应用场景

  • 当一个算法功能需要能够改变,并通过在子类中对功能重写来实现这种变化;
  • 当算法能够实现统一步骤,并且可以划分不变部分和可变部分,将可变互粉在子类中实现算法不同的变化;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++设计模式之模板方法模式(TemplateMethod) https://www.kuaiidc.com/72497.html

相关文章

发表评论
暂无评论