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

平价建网站如何去推广自己的产品

平价建网站,如何去推广自己的产品,怎么做用户调研网站,网站关键词优化seo关键词之间最好用逗号概念#xff1a; 代码的工厂模式是一种设计模式#xff0c;用于创建对象实例而无需直接调用构造函数。它提供了一种更加灵活和可维护的方式来创建对象#xff0c;尤其是在需要根据不同情况创建不同类型的对象时非常有用。工厂模式隐藏了对象的创建细节#xff0c;使代码更…概念 代码的工厂模式是一种设计模式用于创建对象实例而无需直接调用构造函数。它提供了一种更加灵活和可维护的方式来创建对象尤其是在需要根据不同情况创建不同类型的对象时非常有用。工厂模式隐藏了对象的创建细节使代码更加模块化和可扩展。 包括的关键元素 工厂方法Factory Method这是一个方法或函数负责创建对象实例。工厂方法通常接受一些参数根据这些参数来确定应该创建哪种类型的对象。 产品Product产品是工厂方法创建的对象实例。产品通常是某个类的实例。 具体工厂Concrete Factory具体工厂是实际执行对象创建的类或函数。每个具体工厂通常负责创建特定类型的产品。 具体产品Concrete Product具体产品是由具体工厂创建的对象实例它们是产品的具体实现。 工厂模式的主要优点 封装对象创建过程工厂模式将对象的创建逻辑封装在一个函数或类中使客户端代码无需关心对象的具体创建方式。这可以减少代码的重复性提高代码的可维护性和可读性。 灵活性通过工厂模式可以轻松地更改对象的创建方式例如切换到不同的实现类或版本而无需修改大量客户端代码。 解耦合工厂模式有助于减少类之间的直接依赖关系。客户端代码不需要了解对象的具体类只需与工厂接口或函数交互。这降低了耦合度使系统更容易维护和扩展。 单一职责原则工厂模式有助于遵循单一职责原则因为它将对象的创建职责从客户端代码中分离出来并将其委托给专门的工厂类或函数。 代码组织工厂模式可以帮助组织代码将对象创建逻辑集中在一个地方使代码更加结构化和清晰。 测试和调试工厂模式使得在单元测试中更容易替换模拟对象从而更容易进行单元测试和调试。 总之工厂模式是一种设计模式有助于提高代码的可维护性、可扩展性和可测试性同时降低了代码的耦合度是面向对象编程中常用的一种设计方法之一。 代码案例  源代码 #include stdio.hstruct Animal {char name[128];int age;int sex;int others;void (*peat)();void (*pbeat)();void (*test)(); };void dogEat() {printf(狗吃屎\n); } void catEat() {printf(猫吃鱼\n); } void personEat() {printf(人吃米\n); } / void dogBeat() {printf(狗咬你\n); } void catBeat() {printf(猫咬你\n); } void personBeat() {printf(人打你\n); } int main() {struct Animal dog {.peat dogEat,.pbeat dogBeat,};struct Animal cat {.peat catEat,.pbeat catBeat,};struct Animal person {.peat personEat,.pbeat personBeat,};dog.peat();cat.peat();person.peat();dog.pbeat();cat.pbeat();person.pbeat();return 0; } 工厂模式之后 自行分开成一个个子文件 #include stdio.h// 定义动物结构体 struct Animal {char name[128];int age;int sex;int others;void (*eat)();void (*beat)(); };// 定义不同类型的吃函数 void dogEat() {printf(狗吃屎\n); }void catEat() {printf(猫吃鱼\n); }void personEat() {printf(人吃米\n); }// 定义不同类型的打函数 void dogBeat() {printf(狗咬你\n); }void catBeat() {printf(猫咬你\n); }void personBeat() {printf(人打你\n); }// 创建动物工厂函数 struct Animal createAnimal(void (*eatFunc)(), void (*beatFunc)()) {struct Animal animal;animal.eat eatFunc;animal.beat beatFunc;return animal; }int main() {// 使用工厂函数创建不同类型的动物对象struct Animal dog createAnimal(dogEat, dogBeat);struct Animal cat createAnimal(catEat, catBeat);struct Animal person createAnimal(personEat, personBeat);// 调用动物对象的方法dog.eat();cat.eat();person.eat();dog.beat();cat.beat();person.beat();return 0; }在上面的代码中我们创建了一个createAnimal函数它接受两个函数指针作为参数并返回一个初始化好的动物对象。然后在main函数中我们使用createAnimal函数来创建不同类型的动物对象然后调用它们的吃和打方法。这样就实现了工厂模式使得创建和使用不同类型的动物对象更加灵活和可维护。 如何理解这个模式的关键点 抽象对象类型在代码中抽象对象类型是struct Animal它定义了动物对象的通用属性和行为。这个抽象类型充当了工厂模式中的产品。 具体对象类型不同种类的动物狗、猫、人被表示为具体对象类型每个具体对象类型都有不同的实现包括吃和打两个行为。这些具体对象类型充当了工厂模式中的具体产品。 工厂函数createAnimal函数是工厂函数它接受不同的参数吃和打的函数指针来创建不同类型的动物对象。这个工厂函数充当了工厂模式中的工厂它负责创建具体产品。 客户端代码在main函数中客户端代码使用工厂函数来创建不同类型的动物对象而不需要知道如何构造这些对象的细节。客户端只关心如何使用这些对象而不关心它们的创建过程。 用链表写法太麻烦也发出来吧。 #include stdio.h #include string.h #include stdlib.h// 定义动物结构体 struct Animal {char name[128]; // 动物的名字void (*peat)(); // 吃的行为函数指针void (*pbeat)(); // 攻击的行为函数指针struct Animal *next; // 指向下一个动物的指针 };// dog void dogEat() {printf(狗吃屎\n); } void dogBeat() {printf(狗咬你\n); } struct Animal dog {.name Pike,.peat dogEat,.pbeat dogBeat,.next NULL };// cat void catEat() {printf(猫吃鱼\n); } void catBeat() {printf(猫咬你\n); } struct Animal cat {.name Tom,.peat catEat,.pbeat catBeat,.next NULL };// person void personEat() {printf(人吃米\n); } void personBeat() {printf(人打你\n); } struct Animal person {.name Lihua,.peat personEat,.pbeat personBeat,.next NULL };// 向链表中添加动物 struct Animal *putAnimal(struct Animal *phead, struct Animal *animal) {if (phead NULL){phead animal;}else{animal-next phead;phead animal;}return phead; }// 根据名字查找动物 struct Animal *findName(char *str, struct Animal *phead) {struct Animal *tmp phead;if (phead NULL){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 putAnimal(phead, dog);phead putAnimal(phead, cat);phead putAnimal(phead, person);while (1){printf(请输入Pike、Tom、Lihua\n);scanf(%s, buf);struct Animal *ptmp findName(buf, phead);if (ptmp ! NULL){printf(姓名%s\n, ptmp-name);ptmp-peat();ptmp-pbeat();}memset(buf, \0, sizeof(buf));}return 0; }
http://www.hkea.cn/news/14394744/

相关文章:

  • 哈尔滨网站制作哪家好懒人图库
  • 手机网站打开手机app比较火的小程序购物平台
  • 珠海网站制作渠道网站平台策划方案
  • 庄河网站建设公司手机网站模板下载免费
  • 做网页和做网站的区别青岛网站建设技术托管
  • 网站建设类行业资讯定制家具网站建设
  • WordPress 302重定向优化系统流程
  • 顺德网站建设找顺的介绍几个网站
  • 做网站用什么前端框架互联网项目推广
  • 西安培训网站建设网络推广方案怎么做
  • 艺术名画网站怎么建设软件商店下载免费版
  • 南充市住房和城乡建设厅网站网站开发毕设
  • 好的高端网站wordpress文章框
  • 自己做网站用花钱么河南郑州旅游攻略必玩的景点
  • 校园论坛网站建设论文投资公司网站设计
  • 怎么优化一个网站百度贴吧营销
  • 网站制作引擎网站建设保障措施
  • 深圳市住房和建设局网站住房做设计有哪些免费网站
  • 建设一个小网站赚钱吗百度指数电脑端查询
  • 网站做推广需要到工信部备案吗消防电气火灾监控系统网站开发
  • 做网站商机上海网站建设定制公司
  • 西安注册公司网站网络营销品牌策略有哪些
  • 在哪学习建网站注册资金可以乱写吗
  • gta5购买房产网站正在建设洛可可创新设计集团
  • 原有网站已备案 怎么做接入哪个网站可以做自由行地图
  • 广州营销型网站建设怎么建一个视频网站做推广
  • 那里做网站比较好建设部网站统计
  • 营销型网站制作企业百度推广的效果
  • 网站建设流程效果旧金山互联网公司排名
  • 苏小小移动网站网站搭建免费软件