天天看点

设计模式——简易工厂模式

以前写的代码很乱,有可能做出一个功能后另一个功能就坏掉了。所有函数写在一个.c文件中,可能会互相影响。

一个解决方法就是分文件编程,参考我的这篇博文。

https://blog.csdn.net/qq_28258885/article/details/110529637

另一种就是学习设计模式

目录

    • 设计模式
    • 什么是类和对象
    • 工厂模式
    • 工厂模式的实现
      • 代码的编写
      • 验证及实现
    • 添加功能

设计模式

代码设计经验的总结,使代码更加稳定,扩展性更强。这样一系列的编程思想。

设计模式通常描述了一组项目紧密作用的类与对象。(JAVA)

设计模式由23种

https://www.runoob.com/design-pattern/design-pattern-tutorial.html

可以在这个链接中查看↑

我的理解是:

设计模式就是前人代码编写的经验,代码架构的总结

什么是类和对象

  • C——面向过程
  • JAVA——面向对象

实际上面向过程和面向对象只是编程的一种思想,不该和语言联系在一起。

  • 类——用户自己定义的数据类型,也称类类型(C的结构体)
  • 对象——类的一种具象
struct Animal{
	int age;
	int sex;		//成员属性
	void (*peat)();	//成员方法
	void (*pbeat)();
};
struct Animal dog;
struct Animal cat;
struct Animal person;
           

其中,dog cat person就是类的对象

以一个简单的demo为例

#include <stdio.h>
struct Animal{
	int age;
	int sex;		//成员属性
	void (*peat)();	//成员方法
	void (*pbeat)();
};

void dogEat()
{
	printf("dog eat bones\n");
}

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

void personEat()
{
	printf("person eat rice\n");
}

int main()
{
	struct Animal dog;
	struct Animal cat;
	struct Animal person;

	dog.peat = dogEat;
	cat.peat = catEat;
	person.peat = personEat;

	dog.peat();
	cat.peat();
	person.peat();
	return 0;
}
           
设计模式——简易工厂模式

这就是面向对象

上面的demo中,还可以用这种方式给结构体赋值

设计模式——简易工厂模式

第二种方式就可以只将我们需要的东西赋值(前面的赋值用逗号,最后一个赋值用分号)

高级工程师对刚入职的员工能写出这样的代码会有好感,他会误认为你看过linux内核源码。内核源码中对结构体的操作就是用这种形式

工厂模式

提供了创建对象的最佳的方式

创建对象时不会对客户端暴露创建逻辑

设计模式——简易工厂模式

在工厂中,所有东西都是封装起来的,不会被暴露

主函数中不用对这些类和对象进行申明,只需要编写逻辑代码,这样就能使主函数中的代码非常简洁

如果后面要加功能,只要在这个工厂的文件夹中加一个文件就可以了

工厂模式的实现

设计模式——简易工厂模式

在工厂的文件夹中,每一个功能都是一个.c文件,

文件中有它的类和对象的创建,并且有一个链表将这些.c文件串联起来

在主函数中初始化即可

代码的编写

下面举例实现

首先创建头文件来定义结构体

设计模式——简易工厂模式

接着添加第一个功能

设计模式——简易工厂模式

接入链表选择头插法——如果没有头,则使新加入的文件变为链表的头,如果有,则用头插法

接下来创建狗和人的文件,分别给它们对应的结构体赋值

接着编写main函数,main函数中就需要初始化来调用这个串联起来的链表

设计模式——简易工厂模式

这样就能够使用了,但是此时编译一定会报错,因为main不认识这三个在工厂中的.c文件中的函数。

所以我们需要修改头文件,让头文件认识这三个函数

设计模式——简易工厂模式

这样,包含了次头文件的主函数就认识这些函数

验证及实现

改错后编译成功

设计模式——简易工厂模式

但执行后并没有任何的输出

原因是主函数中没有执行,只是把工厂中的文件串成了一个链表

设计模式——简易工厂模式
设计模式——简易工厂模式

主函数修改完后就可以实现函数的调用

设计模式——简易工厂模式

添加功能

添加一个马

在文件夹中创建一个文件

设计模式——简易工厂模式

接着在主函数中把它加入到链表中

设计模式——简易工厂模式

在头文件中也要申明这个函数

设计模式——简易工厂模式
设计模式——简易工厂模式

功能添加成功

这样的方法添加功能非常简单,而且不回出错

在实际工作场景中,有可能一个函数的代码就上百行,那么这个函数的文件就会炸裂,很难维护或者添加功能

继续阅读