模板函数提示我们,只要比较的逻辑是确定的,那么不管是什么数据类型,都会得到一个相应的结果。固然,这个比较的流程比较简单,即使没有
采用模板函数也没有关系。但是,要是需要拆分的步骤很多,那么又该怎么办呢?如果相通了这个问题,那么也就明白了什么是template模式。
比方说,现在我们需要设计一个流程。这个流程有很多小的步骤完成。然而,其中每一个步骤的方法是多种多样的,我们可以很多选择。但是,所
有步骤构成的逻辑是唯一的,那么我们该怎么办呢?其实也简单。那就是在基类中除了流程函数外,其他的步骤函数全部设置为virtual函数即可。
basic的类说明了基本的流程process是唯一的,所以我们要做的就是对step1和step2进行改写。
所以,按照我个人的理解,这里的template主要是一种流程上的统一,细节实现上的分离。明白了这个思想,那么用C语言来描述template模式就
不是什么难事了。
因为在C++中process函数是直接继承的,C语言下面没有这个机制。所以,对于每一个process来说,process函数都是唯一的,但是我们每一次操
作的时候还是要去复制一遍函数指针。而step1和step2是不同的,所以各种方法可以用来灵活修改自己的处理逻辑,没有问题。
C语言和设计模式(工厂模式)
工厂模式是比较简单,也是比较好用的一种方式。根本上说,工厂模式的目的就根据不同的要求输出不同的产品。比如说吧,有一个生产鞋子的工
厂,它能生产皮鞋,也能生产胶鞋。如果用代码设计,应该怎么做呢?
就像上面说的,现在有胶鞋,那也有皮鞋,我们该怎么做呢?
所以,对于一个工厂来说,创建什么样的鞋子,就看我们输入的参数是什么?至于结果,那都是一样的。
C语言和设计模式(责任链模式)
责任链模式是很实用的一种实际方法。举个例子来说,我们平常在公司里面难免不了报销流程。但是,我们知道公司里面每一级的领导的报批额度
是不一样的。比如说,科长的额度是1000元,部长是10000元,总经理是10万元。
那么这个时候,我们应该怎么设计呢?其实可以这么理解。比如说,有人来找领导报销费用了,那么领导可以自己先看看自己能不能报。如果费用
可以顺利报下来当然最好,可是万一报不下来呢?那就只能请示领导的领导了。
所以这个时候,我们首先需要设置额度和领导。
http://www.uml.org.cn/c%2B%2B/201608044.asp
第4页 共17页 2022/10/6 18:39