有哪些设计模式?c语言如何实现这些设计模式?
《C现代编程》读书笔记
模板方法模式
管理资源(文件或者内存)是一件很麻烦的事情,因为分配资源后还必须释放资源,如fopen和fclose需要对应,malloc和free需要对应。因此处理资源的代码总是显得非常繁杂。
如果函数在处理到一半的时候,返回了,而不去释放文件或内存,让文件或者内存一直处于打开状态,就会出现问题。但是如果加入的话,又容易出现代码混乱。
方法:将程序中的部分处理作为可以被替换的函数,将其他处理作为固定处理,使其可以重复利用,这里资源的分配和释放处理是固定处理,而获取文件中数值范围的处理则是可以被替换的处理。
优点:
首先, 文件的打开和关闭等操作都集中在 read_file函数中。也就是说只能在其中分配和释放资源。通常情况下,最好尽量将分配和释放资源的处理放在一起,否则很容易忘记。另外 , 该结构将文件处理分离到 processor函数中。 这样一来. 各函数的职责更加清晰明确 。也可以避免中途退出循环时发生的问题。
升级1:返回非int值
C语言中多用void或者联合体解决问题
这里可以使用一个结构体,需要什么返回值,就增加一个什么样的结构体。
typedef struct FileReaderContext { |
升级二:处理其他资源
实现将一个文件中的数据读取到内存中,进行排序后,再输出给另一个文件的功能。
将最常用的写成模板,而不是将整体写成模板。
处理文件+处理内存