ARM-Linux智能家居项目

289 阅读2分钟

设计模式概念的引入 设计模式通常描述了一组相互紧密作用的类和对象,由建筑设计领域引入到计算机科学中。 设计模式是代码设计经验的总结,这种设计稳定,拓展性更强。是一系列编程思想。与算法不同,算法不是设计模式,因为算法致力于解决问题而非设计问题。 设计模式有23种,代码更容易被他人理解,保证代码可靠性,程序的重用性。

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

一、C语言面向对象 引入类和对象的概念

类是一种用户定义的引用数据类型,也称类类型。 结构体对象是类的一种具象

#include <stdio.h>
struct Animals{//定义一个结构体
        char name[128];
//char name是定义一个char型的变量,即1个字节的内存空间 
//char name[128]是定义一个长度为128的char型数组,即128个字节的连续内存空间
        int age;
        int sex;
        void (*peat)();//指针函数
        void (*pbeat)();
};

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

void catEat(){
        printf("猫吃鱼\n");
}

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

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

int main(){
        struct Animals dog;
        struct Animals cat;
        struct Animals person;	
        
        dog.peat=dogEat;//函数指针注意不加括号,cat.peat=catEat()是错的
        cat.peat=catEat;
        person.peat=personEat;

        dog.peat();//调用函数,无参
        cat.peat();
        person.peat();
        return 0;
}

C结构体 区分三种对象实例化的方式

int main(){
            struct Animals dog;//对象实例化
            struct Animals cat;
            struct Animals person;	
            
            dog.peat=dogEat;//第一种对象实例化
            //第二种对象实例化,需要将所有属性写明
            struct Animals dog1={"大黄",1,1,dogEat,dogBeat};
            //第三种对象实例化,只需将用到的属性写明
            struct Animals dog2={
                    .peat=dogEat,//注意是逗号,不是分号
                    .pbeat=dogBeat//注意结束没有分号,和第一种实例化的方式相同
            };
image.png

第三种对象实例化的方式实现了通过使用一个共同的接口来指向新创建的对象。