wordpress主题 网站大全,成全视频免费观看在线看2024年新年贺词,申请网站平台怎么做,站外推广6种方法C之模板模式 描述实现原理示例步骤1步骤1 分析步骤2步骤2 分析调用输出结果 结论 描述
模板模式#xff08;Template Pattern#xff09;是设计模式中的一种行为型模式。 该模式定义一个操作中的算法骨架#xff0c;而将具体的算法实现延迟到子类中。 模板模式使得子类可以… C之模板模式 描述实现原理示例步骤1步骤1 分析步骤2步骤2 分析调用输出结果 结论 描述
模板模式Template Pattern是设计模式中的一种行为型模式。 该模式定义一个操作中的算法骨架而将具体的算法实现延迟到子类中。 模板模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
实现原理
在C中模板模式一般通过一个父类定义一个算法框架将算法中的某些步骤定义为虚函数。子类通过继承父类并重写这些虚函数的方式来实现具体的算法。
示例
下面是一个简单的C模板模式示例假设要实现一个消息发送系统其中有两种不同类型的消息普通消息和加急消息。它们的发送流程是不同的但消息的基本结构相同。 可以使用模板模式来实现这个系统。
步骤1
首先需要定义一个抽象消息基类Message其中定义发送消息的算法框架
class Message {
public:// 发送消息的算法框架void send() {// 第一步构造消息build_message();// 第二步加密消息encrypt_message();// 第三步发送消息send_message();}protected:// 构造消息抽象方法virtual void build_message() 0;// 加密消息抽象方法virtual void encrypt_message() 0;// 发送消息抽象方法virtual void send_message() 0;
};步骤1 分析
上面的代码中定义了一个send()方法作为算法框架其中包含三个步骤构造消息、加密消息和发送消息。这三个步骤都被定义为抽象方法需要在子类中实现。
步骤2
可以定义两个具体的消息类型普通消息NormalMessage和加急消息UrgentMessage
// 普通消息
class NormalMessage : public Message {
protected:// 构造普通消息virtual void build_message() {cout 构造一条普通消息 endl;}// 加密普通消息virtual void encrypt_message() {cout 对普通消息进行加密 endl;}// 发送普通消息virtual void send_message() {cout 发送普通消息 endl;}
};// 加急消息
class UrgentMessage : public Message {
protected:// 构造加急消息virtual void build_message() {cout 构造一条加急消息 endl;}// 加密加急消息virtual void encrypt_message() {cout 对加急消息进行加密 endl;}// 发送加急消息virtual void send_message() {cout 发送加急消息 endl;}
};步骤2 分析
上面的代码中分别重写了Message中的三个抽象方法实现了普通消息和加急消息的具体功能。
调用
最后可以使用这两个具体的消息类型来发送消息
int main() {Message* nm new NormalMessage();nm-send();delete nm;Message* um new UrgentMessage();um-send();delete um;return 0;
}输出结果
输出结果为
构造一条普通消息
对普通消息进行加密
发送普通消息
构造一条加急消息
对加急消息进行加密
发送加急消息结论
从上面的代码可以看出通过继承Message并重写其中的抽象方法来实现了不同类型消息的发送而算法框架仍然是由父类Message所提供的。这就是模板模式的核心思想。