【前言】设计模式主要针对面向对象语言,或者说就是基于java诞生的。C语言开发者也时不时引用一下某个设计模式来描述自己的代码,毕竟设计模式的编程思想是通用的。设计模式的描述语言都是对象、类、封装、继承,而我们C语言总是在说函数、数据结构、算法。在这里就强行用C语言的角度描述一下设计模式,经验有限,不一定准确。
先看设计原则。
单一职责原则:设计目的单一的类。也就是降低程序的耦和程度
[基于C语言描述]:一个函数只做一件事。
开闭原则:对扩展开放,对修改封闭。
[基于C语言描述]:不修改原代码,重新定义新函数扩展
依赖倒置原则:依赖于抽象,而不依赖于具体的实现;针对接口编程,不针对实现编程
[基于C语言描述]:设计的接口尽量通用,而不是仅仅针对具体场景
最少知道原则:一个对象应当对其他对象有尽可能少的了解,即信息隐蔽
[基于C语言描述]:结构体中元素尽量少的涉及其他结构体元素
组合重用原则:尽量使用组合,而不是使用继承来达到重用的目的,因为继承是一种紧偶和
[基于C语言描述]:尽量使用多个函数接口,而不是将多个功能放到一个函数接口里
里氏替换原则:用子类去替代父类
[基于C语言描述]:扩展的新函数可以完全替代老的函数。
接口隔离原则:客户端不应该依赖那些它不需要的接口
接着看GoF(“四人帮”,指Gamma, Helm, Johnson & Vlissides, Addison-Wesley四人)的23种设计模