什么是工厂模式?
是最常用的设计模式之一。这种类型的设计模式属于创建型模式,他提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴漏创建逻辑(都隐藏起来),并且是通过使用一个共同的接口来指向新创建的对象。
使用起来就是在一个程序中,主函数的代码中的函数在调用时(通过API接口 )会去工厂中找对应的代码,很方便简洁
举例了解工厂模式的使用
工厂模式就相当于一个大链表,以智能家居为例,在一个工厂中,把各个功能模块以链表的形式连起来,爆露出来给main来调用,在main函数中做初始化(构造链表)。彼此又互不影响。
cat.c:
putcatLink 是将cat对象插入进链表的API接口。
dog.c
putdogLink 是将dog对象插入进链表的API接口。
(链表作为接口)
animal.h: (因为dog.c和cat.c里面都含有,struct Animal 这个结构体,所以将其声明在animal.h 这个头文件里面,然后还需要声明供主程序调用的API函数接口)
上图12和13行就是供主程序调用的API函数接口。
mainpro.c:
dog.c , cat.c , animal.h 都提供接口给mainpro.c。
~ 简单来说根据特定的条件去工厂里找,找到后执行
根据以上简单工厂模式,智能家居设计的时候,就可以设计为指令工厂、main函数、控制工厂,指令工厂面就存放指令(比如:语音指令、客户端指令等,将这些指令串为一个链表),控制工厂就是控制一些家庭设备(比如:各个房间的灯,门锁、串口等,创建一个链表,然后根据指令,去查找对应的控制结点),main函数里面首先创建两个链表(指令工厂、控制工厂),然后接下来创建两个线程(一个是语音的、一个是客户端的),在每个线程里面在接受到指令后去控制工厂里面去查找对应的控制设备然后进行一系列操作。
根据上面的叙述,我们可以创建以下架构的代码文件工程,指令工场和控制工场的头文件就是以下图片中的两个头文件。然后将这些文件导入到sourceInsight里面进行代码的编写。