这里先插一点题外话,在C语言中,实现封装、继承、隐藏、多态等等特性,是完全没有问题的。但是在使用过程中,必定是不如自带这些特性的语言方便好用的,比如C++\java等。
一旦要通过C语言来实现各种设计模式,必定会在严谨地维护类层次上造成非常繁琐和臃肿的代码。这是因为C++/java等自带一套面向对象的工具,而C语言要在代码设计中,不断地根据实际情况来创造面向对象的工具。
因此对于文章的内容,请大家主要关注、体会设计模式本身,更多地去考虑程序的可扩展性和可维护性。
文章本身是希望向C语言爱好者普及设计模式的知识,在所有的程序设计中,本意都是尽可能地简单易懂。因此抛开设计模式的本意去讨论程序的代码实现优劣,是没有任何意义的。之前发表的c语言面向对象系列文章确实参考了网上很多资料和书籍,也借鉴了其中一些案例。但是代码确实是自己完整实现的,并复制粘贴在菜鸟 C 在线工具进行验证了(https://c.runoob.com/compile/11)。今后类似借鉴、抄袭等等话题不想再次和大家争论,容易伤和气。毕竟只是希望大家能从我的文章有所收获而已,不喜欢直接左上角关闭就好。
鉴于之前有部分读者过于关注程序本身的功能性,更有甚者仅因为某一两方面见解不同就口出恶言。唯恐这样下去只会把技术的圈子搞臭。因此以后的c语言设计模式将不再给出具体实现,只讲解模式动机和设计思路。
希望大家可以针对设计模式方面给文章提出一些改进的建议,本人可以保证,对于无恶意、有针对性的建议,一定会吸收接纳、及时改正。
接下来是文章的正文部分。
模式动机
完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。
在软件开发中也