当前位置: 首页 > news >正文

企业网站建设 推广seo基础教程使用

企业网站建设 推广,seo基础教程使用,长沙人才招聘网官网网址,wordpress multisite【设计模式】 工厂模式介绍及C代码实现 背景 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来…

【设计模式】 工厂模式介绍及C代码实现

背景

  在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合?

定义

  工厂模式是一种创建型设计模式,它提供一种通用的接口来创建对象,但是让子类决定实例化哪个类。工厂模式将对象的创建过程封装在一个工厂类中,避免直接调用构造函数,提高代码的灵活性和可维护性。工厂模式实现了依赖倒置原则,即面向接口编程而不是面向实现编程。

  在工厂模式中,有一个抽象工厂接口,定义了工厂类应该实现的方法,以及一组产品接口,定义了工厂类应该创建的产品的通用行为。具体的工厂类实现了抽象工厂接口,用于创建具体的产品对象。

  工厂模式可以分为三种不同的类型:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式只有一个工厂类,它根据传入的参数来决定创建哪种类型的产品对象。工厂方法模式定义一个抽象工厂接口和一组产品接口,每个具体的工厂类实现了抽象工厂接口,并创建了一组具体的产品对象。抽象工厂模式定义一组抽象工厂接口和一组抽象产品接口,每个具体的工厂类实现了一组抽象工厂接口,每个具体的产品类实现了一组抽象产品接口。

应用场景

工厂模式适用于以下场景:

  • 需要创建复杂对象的场景,可以使用工厂模式将对象的创建过程封装起来,避免直接调用构造函数;
  • 需要提供统一的接口来创建一组相关对象的场景,可以使用工厂模式将相关对象的创建过程统一起来;
  • 需要避免使用 new 关键字来创建对象的场景,可以使用工厂模式来代替直接调用构造函数。
      总的来说,工厂模式是一种非常常用的设计模式,可以提高代码的可维护性、灵活性和可扩展性,因此在各种编程语言中都得到了广泛的应用。

模式结构

在这里插入图片描述

实现步骤

工厂模式的实现步骤如下:

  1. 定义一个抽象产品接口,用于定义一组产品的通用行为。

  2. 定义一个具体产品类,实现抽象产品接口,用于提供具体的产品实现。

  3. 定义一个抽象工厂接口,用于定义工厂类应该实现的方法。

  4. 定义一个具体工厂类,实现抽象工厂接口,用于创建具体的产品对象。

  5. 在客户端代码中使用工厂类创建具体的产品对象。

C语言代码示例

下面是一个简单的 C 语言工厂模式的示例代码,用于创建不同类型的车辆对象:

#include <stdio.h>
#include <stdlib.h>typedef enum {SEDAN,SUV,HATCHBACK
} CarType;typedef struct {int price;char* model;
} Car;Car* createCar(CarType type) {Car* car = (Car*) malloc(sizeof(Car));if (car == NULL) {return NULL;}switch (type) {case SEDAN:car->price = 20000;car->model = "Sedan Car";break;case SUV:car->price = 30000;car->model = "SUV Car";break;case HATCHBACK:car->price = 15000;car->model = "Hatchback Car";break;default:printf("Invalid car type.\n");free(car);return NULL;}return car;
}int main() {Car* sedan = createCar(SEDAN);printf("Price of %s is %d.\n", sedan->model, sedan->price);free(sedan);Car* suv = createCar(SUV);printf("Price of %s is %d.\n", suv->model, suv->price);free(suv);Car* hatchback = createCar(HATCHBACK);printf("Price of %s is %d.\n", hatchback->model, hatchback->price);free(hatchback);Car* invalid = createCar(100);if (invalid == NULL) {printf("Failed to create invalid car.\n");}return 0;
}

  在上面的示例代码中,我们定义了一个 Car 结构体表示车辆,包含价格和型号两个属性,以及一个 CarType 枚举类型表示不同类型的车辆。
  createCar 函数是工厂函数,接受一个 CarType 参数,根据不同的类型创建不同的车辆对象,并返回指向 Car 结构体的指针。在 main 函数中,我们调用 createCar 函数创建不同类型的车辆对象,并输出其价格和型号。注意,当传入无效的 CarType 参数时,createCar 函数会返回 NULL。最后,我们需要手动释放 createCar 函数中使用 malloc 函数动态分配的内存。

总结

  使用工厂模式可以提高代码的可维护性和可扩展性。当需要新增产品时,只需要增加相应的产品类和工厂类,而无需修改客户端代码。当需要替换产品实现时,只需要修改相应的产品类和工厂类即可,而无需修改客户端代码。

  • 工厂设计模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。
  • 工厂设计模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。
  • 工厂设计模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同。

需要注意的是,过度使用工厂模式会增加代码的复杂性和额外的开销。因此,在实际使用时应该根据具体情况进行选择,选择最适合的实现方式。

http://www.dinnco.com/news/25585.html

相关文章:

  • 网站公司的客户怎么来大侠seo外链自动群发工具
  • 外国网站上做雅思考试seo是做什么工作的
  • 深圳建立网站网络推广优化服务
  • 安徽餐饮加盟网站建设宁波seo优化报价多少
  • 做视频网站用什么源码seo优化方案总结
  • 我的主页设计南昌seo招聘信息
  • 外贸网站建设解决方案2021年年度关键词排名
  • 帮朋友做网站不给钱东莞网站seo优化托管
  • 58同城通辽做网站外贸做网站公司哪家好
  • 济宁专业做优化的网站软文街官网
  • 做网投网站怎么建公司网站
  • java做网站用什么做网络推广怎么学
  • 微信高端网站建设百度人工优化
  • 网站哪里备案有区别么北京网站优化多少钱
  • 网站建设绵阳免费建站
  • 官方网站的重要性营销模式100个经典案例
  • 深圳做网站那家公司好关键词seo排名公司
  • 网站免费源码下载网络营销型网站
  • 自动优化网站建设超级外链
  • 免费建立公司网站百度投诉电话人工服务总部
  • 做精神科网站价格公司网站怎么弄
  • 在网站做淘宝推广北京疫情消息1小时前
  • 沧州哪里做网站seo 推广服务
  • 猪八戒官网做网站专业吗站长工具5g
  • 网页网站项目综合网站制作的基本流程是什么
  • 网站建站怎么报价怎么查询搜索关键词
  • 君和网站建设抖音seo推广外包公司好做吗
  • 去掉wordpress顶部点击宝seo
  • 旅游网站建设技术有哪些内容公众号如何推广引流
  • 福建龙岩有哪些网络平台免费的seo