2021-07-30嵌入式学习---智能家居项目

1、智能家居功能拆分

2021-07-30嵌入式学习---智能家居项目

2、设计模式

智能家居代码架构—简单工厂模式
设计模式
代码设计经验的总结,稳定、拓展性更强,是一系列编程思想。有23种,代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式通常描述了一组相互紧密作用的类与对象。
算法不是设计模式,因为算法致力于解决问题而非设计问题。
类和对象
类是一种用户定义的引用数据类型,也称类类型。结构体
对象:类的一种具象
工厂模式
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

//animal.h
#include <stdio.h>

struct Animal{
	char name[128];
	int sex;
	int age;
	void *peat();
	void *pbeat();

	struct Animal *next;
}

struct Animal* putCatInLink(struct Animal *phread);
struct Animal* putDogInLink(struct Animal *phread);
//cat.c
#include "animal.h"

void catEat()
{
	printf("cat bite fish\n");
}

void catBeat()
{
	printf("cat catch person\n");
}

struct Animal cat = {
	.name = "Tom",
	.peat = catEat,
	.pbeat = catBeat
};

struct Animal* putCatInLink(struct Animal *phread)
{
	if(phread == NULL){
		phread = &cat;
		return phread;
	}else{
		cat.next = phread;
		phead = &cat;
		return phead;
	}
}
//dog.c
#include "animal.h"

void dogEat()
{
	printf("dog bite meat\n");
}

void dogBeat()
{
	printf("dog bite person\n");
}

struct Animal dog = {
	.name = "huang",
	.peat = dogEat,
	.pbeat = dogBeat
};

struct Animal* putDogInLink(struct Animal *phread)
{
	if(phread == NULL){
		phread = &dog;
		return phread;
	}else{
		dog.next = phread;
		phead = &dog;
		return phead;
	}
}
//main.c
#include "animal.h"

struct Animal* findName(char *str, struct Animal *phead)
{
	struct Animal *tmp = head;
	if(phead == NULL){
		printf("NULL\n");
		return NULL;
	}else{
		while(tmp != NULL){
			if(strcmp(tmp->name,str) == 0){
				return tmp;
			}
			tmp = tmp->next;
		}
		return NULL;
	}
}

int main()
{
	char buf[128] = {'\0'};
	struct Animal *phead = NULL;
	struct Animal *ptmp
	phead = putCatInLink(phead);
	phead = putDogInLink(phead);

	while(1){
		printf("input your choice: Tom huang\n");
		scanf("%s", buf);
		ptmp = findName(buf,phead);
		if(ptmp != NULL){
			ptmp->pbeat();
			ptmp->peat();
		}
		memset(buf, '\0', sizeof(buf));
	}
	return 0;
}
上一篇:Java.多态


下一篇:【原理+实战+视频+源码】Spring学习总结:IOC基础