1.智能家居架构图

在这里插入图片描述

2.设计模式的引入

1.什么是设计模式

设计模式是代码经验的总结,代码的稳定性高,拓展性强。是一系列的编程思想,一共23种模式。
设计模式的目标是提高代码的可读性、稳定性、重用性、拓展性。
工厂模式是设计模式的一种。
算法并不是设计模式,只是解决问题的一种方法。
设计模式描述了紧密结合的类与对象。

2.什么是类和对象

1.概述

类是一种用户自定义的数据类型。在C语言中结构体可以充当类。
对象是类的一种实现,
struct Animal{
	int age;
	int sex;//成员属性
	void *peat();
	void *pbeadt(); //成员方法
}
struct Animal dog;
struct Animal cat; 
dog cat都是一种类的对象。

2.实现

#include <stdio.h>
#include <stdlib.h>
struct Anmial{
	char name[32];
    int age;
    int sex;
    void (*peat)();//函数指针 存放的是函数的地址
    void (*pbeat)();
};
 void dogEat(){
	printf("狗吃屎\n");
 }
 void catEat(){
	printf("猫吃鱼\n");
 }
 void dogBeat(){
	printf("用嘴咬\n");
 }
 void catBeat(){
	printf("用爪子挠\n");
 }
int main()
{	struct Anmial dog;
	struct Anmial cat;
    dog.peat=dogEat;//函数名就是函数的地址
    cat.peat=catEat;
    dog.pbeat=dogBeat;
    cat.pbeat=catBeat;
    
    
	dog.peat();
    cat.peat();
    dog.pbeat();
    cat.pbeat();
	system("pause");
	return 0;
}


代码改进——C语言结构体的新玩法
C语言结构体中有很多的属性,一些属性我们并不一定会用到,于是采用下面的方法。

#include <stdio.h>
#include <stdlib.h>
struct Anmial{
	char name[32];
    int age;
    int sex;
    void (*peat)();//函数指针 存放的是函数的地址
    void (*pbeat)();
};
 void dogEat(){
	printf("狗吃屎\n");
 }
 void catEat(){
	printf("猫吃鱼\n");
 }
 void dogBeat(){
	printf("用嘴咬\n");
 }
 void catBeat(){
	printf("用爪子挠\n");
 }
int main()
{	struct Anmial dog={
		.name="阿黄",
        .age=10,
        .peat=dogEat,
        .pbeat=dogBeat
	};
	struct Anmial cat={
		.name="猫咪",
		.peat=catEat,
        .pbeat=catBeat
    
    };
    //dog.peat=dogEat;
    //cat.peat=catEat;
    //dog.pbeat=dogBeat;
    //cat.pbeat=catBeat;//函数名就是函数的地址
    
    
	dog.peat();
    cat.peat();
    dog.pbeat();
    cat.pbeat();
	system("pause");
	return 0;
}

3.什么是工厂模式

1.概述

工厂模式是常用的设计模式之一。
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在公厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且使用一个共同的接口(API)来指向新建的对象。

2.实现

在这里插入图片描述

1.anmial.h
#include <stdio.h>

struct Anmial{	
	char name[32];
	int age;
	int sex;
	void (*peat)();//函数指针 存放的是函数的地址
	void (*pbeat)();
	struct Anmial *next;
};
struct Anmial *putCatInLink(struct Anmial *phead);
struct Anmial *putDogInLink(struct Anmial *phead);
struct Anmial *putPersonInLink(struct Anmial *phead);
2.cat.c
#include "anmial.h"
void catEat(){
	printf("猫吃鱼\n"); 
}

void catBeat(){
	printf("用爪子挠\n");
}

struct Anmial cat={
	.name="TOM",
	.peat=catEat,
	.pbeat=catBeat
};

struct Anmial *putCatInLink(struct Anmial *phead){

	if(phead == NULL){
		phead=&cat;
		return phead;
	}else{
		cat.next=phead;
		phead=&cat;
		return phead;
	}
		
}

3.dog.c
#include "anmial.h"

void dogBeat(){
	printf("用嘴咬\n");
}

void dogEat(){
	printf("狗吃屎\n");
}

struct Anmial dog={
	.name="huang",
	.age=10,
	.peat=dogEat,
	.pbeat=dogBeat
};

struct Anmial *putDogInLink(struct Anmial * phead){

	if(phead == NULL){
		phead=&dog;
		return phead;
	}else{
		dog.next=phead;
		phead=&dog;
		return phead;
	}
		
}
4.mainPro.c
#include "anmial.h"
#include <string.h>

struct Anmial* findUntilByName(char *cmd,struct Anmial*phead){
	struct Anmial *ptmp=phead;
	if(ptmp == NULL){
		printf("none\n");
		return NULL;
	}else{
		while(ptmp!=NULL){
			if(strcmp(ptmp->name,cmd)==0){
				return ptmp;
			}
			ptmp=ptmp->next;

		
		}
		printf("not find\n");
		return NULL;

	}

}


int main(){
	struct Anmial *ptmp=NULL;
	struct Anmial *phead=NULL;

	char cmd[128]={'\0'};
	phead=putCatInLink(phead);
	phead=putDogInLink(phead);
	phead=putPersonInLink(phead);
	while(1){
		printf("input TOM huang xiaoli\n");
		scanf("%s",cmd);

		ptmp=findUntilByName(cmd,phead);
		if(ptmp!=NULL){
			ptmp->peat();
			ptmp->pbeat();

		}
		memset(cmd,'\0',sizeof(cmd));

	}

	return 0;
}

5.person.c
#include "anmial.h"

void personBeat(){
	printf("用脚踢\n");
}

void personEat(){
	printf("人吃米\n");
}

struct Anmial person={
	.name="xiaoli",
	.age=10,
	.peat=personEat,
	.pbeat=personBeat
};


struct Anmial *putPersonInLink(struct Anmial * phead){

	if(phead == NULL){
		phead=&person;
		return phead;
	}else{
		person.next=phead;
		phead=&person;
		return phead;
	}
		
}

4.智能家居代码架构图

在这里插入图片描述
在这里插入图片描述

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐