随笔分类 - 设计模式
摘要:依赖倒置:就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。假设一个客户端可以根据不同的终端智能显示,面向过程的处理流程结构图如下:客户端代码流程如下:if (type == Teminal1){ T1_disply();}else if(type == Teminal2){ T2_disply();}功能实现没有任何问题,考虑到软件的扩展如果增加一个新的终端我们再客户端的流程中就要加一个判断分支,如果系统够复杂后果往往是在流程中遍布判断,对后期的开发、维护都是艰巨的任务。产生这种结果的原因是业务依赖了底层的具...
阅读全文
摘要:接口隔离:定义为客户端不应该依赖它不需用的接口,在C语言中我们可以把头文件看成一个模块的接口,根据接口隔离原则也就是说这个头文件中只能包含外部需要的接口,但在实际的项目中往往头文件都不符合接口隔离原则。1:内、外部接口的隔离:头文件中通常包含了模块内部接口(内部类型定义、内部接口声明)和外部接口(外部接口声明)假设moudle模块对外提供一个fun1接口,模块内部实现需要定义一个结构类型,一般的实现如下:/*moudle.h*/typedef struct str_s str_t;struct str_s{ int a; int b;};void fun1();/*moudle.c...
阅读全文
摘要:为什么要用C来模拟面向对象的机制,在实际的工作中我们往往在感慨一些面向对象的经典设计模式由于C语言的限制无法使用,其实通过简单的模拟面向对象的行为,在C语言中也可以使用这些模式。1:类的构建类描述了所创建的对象共同的属性和方法。我们在一个源文件中通过把数据和操作进行适当的组织来完成类的模拟。/*类的数据*/typedef struct SQUARE_S SQUARE_T;struct SQUARE_S{ void (*draw)(void*); int sideLen;};/*类的方法*/static void draw(void* pObj){ SQUARE_T* pSqr...
阅读全文
摘要:单一职责原则:通常的定义是只专注于做一件事和仅有一个引起它变化的原因。对于接口、实现、函数级别往往我们比较容易关注单一职责,大家谈的也比较多,但对于返回值、参数可能不会有太多的人关注。但往往就是这些不符合单一职责原则的设计可能导致一些很难发现的BUG。看看下面这段代码:pBuf = (byte*)realloc( pBuf, size);if( pbBuf != NULL ){ TODO...}可能很多人一眼看上去并没有什么问题,先让我们看看这个库函数的定义:函数简介 原型:extern void *realloc(void *mem_address, unsigned int ...
阅读全文

浙公网安备 33010602011771号