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

鞋子 东莞网站建设seo外包费用

鞋子 东莞网站建设,seo外包费用,中国营销策划网官网,网站排名怎样做有效介绍 提供了一个创建一系列相关或相互依赖的对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 在抽象工厂模式中,每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构…

介绍

        提供了一个创建一系列相关或相互依赖的对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。

        在抽象工厂模式中,每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构成了一个产品族。

实现

myclass.h

//
// Created by yuwp on 2024/1/12.
//#ifndef DESIGNPATTERNS_MYCLASS_H
#define DESIGNPATTERNS_MYCLASS_H#include <iostream>class AbstractProductA {};class AbstractProductB {};class ConcreteProductA : public AbstractProductA {
public:ConcreteProductA();
};class ConcreteProductB : public AbstractProductB {
public:ConcreteProductB();
};class AbstractFactory {
public:virtual AbstractProductA *createProductA() = 0;virtual AbstractProductB *createProductB() = 0;
};class ConcreteFactory1 : public AbstractFactory {
public:AbstractProductA *createProductA() override;AbstractProductB *createProductB() override;
};#endif //DESIGNPATTERNS_MYCLASS_H

myclass.cpp

//
// Created by yuwp on 2024/1/12.
//#include "myclass.h"#include "myclass.h"ConcreteProductA::ConcreteProductA() {std::cout << "产品A" << std::endl;
}ConcreteProductB::ConcreteProductB() {std::cout << "产品B" << std::endl;
}AbstractProductA* ConcreteFactory1::createProductA() {std::cout << "工厂1生产了: ";return new ConcreteProductA();
}AbstractProductB* ConcreteFactory1::createProductB() {std::cout << "工厂1生产了: ";return new ConcreteProductB();
}

main.cpp

#include <iostream>
#include <mutex>
#include "myclass.h"int main() {AbstractFactory *factory = new ConcreteFactory1();auto a = factory->createProductA();auto b = factory->createProductB();delete factory;delete a;delete b;return 0;
}

总结

        优点:

        1. 抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得相对容易,所有的具体工厂都实现了在抽象工厂中声明的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。

        2. 当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。

        3. 增加新的产品族很方便,无须修改已有系统,符合开闭原则。

        缺点:

        1. 增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了开闭原则。

        使用场景:

        1. 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是很重要的,用户无须关心对象的创建过程,将对象的创建和使用解耦。

        2. 系统中有多于一个的产品族,而每次只使用其中某一个产品族。可以通过配置文件等方式来使得用户可以动态改变产品族,也可以很方便地增加新的产品族。

        3. 属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。同一个产品族中的产品可以是没有任何关系的对象,但是它们都具有一些共同的约束。例如同一操作系统下的按钮和文本框,按钮与文本框之间没有直接关系,但它们都是属于某一操作系统的,此时具有一个共同的约束条件:操作系统的类型。

        4. 产品等级结构稳定,设计完成之后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构。

练习

myclass.h

//
// Created by yuwp on 2024/1/12.
//#ifndef DESIGNPATTERNS_MYCLASS_H
#define DESIGNPATTERNS_MYCLASS_H#include <iostream>class Controller {  // 抽象产品};class AndroidOperationController : public Controller { // 具体产品
public:AndroidOperationController();
};class AndroidInterfaceController : public Controller { // 具体产品
public:AndroidInterfaceController();
};class IOSOperationController : public Controller { // 具体产品
public:IOSOperationController();
};class IOSInterfaceController : public Controller { // 具体产品
public:IOSInterfaceController();
};class ControllerFactory { // 抽象工厂
public:virtual Controller *createOperation() = 0;virtual Controller *createInterface() = 0;
};class AndroidControllerFactory : public ControllerFactory {
public:Controller *createOperation() override;Controller *createInterface() override;
};class IOSControllerFactory : public ControllerFactory {
public:Controller *createOperation() override;Controller *createInterface() override;
};#endif //DESIGNPATTERNS_MYCLASS_H

myclass.cpp

//
// Created by yuwp on 2024/1/12.
//#include "myclass.h"#include "myclass.h"AndroidOperationController::AndroidOperationController() {std::cout << "Android系统游戏操作控制" << std::endl;
}AndroidInterfaceController::AndroidInterfaceController() {std::cout << "Android系统游戏界面控制" << std::endl;
}IOSOperationController::IOSOperationController() {std::cout << "ios系统游戏操作控制" << std::endl;
}IOSInterfaceController::IOSInterfaceController() {std::cout << "ios系统游戏界面控制" << std::endl;
}Controller* AndroidControllerFactory::createOperation() {return new AndroidOperationController();
}Controller* AndroidControllerFactory::createInterface() {return new AndroidInterfaceController();
}Controller* IOSControllerFactory::createOperation() {return new IOSOperationController();
}Controller* IOSControllerFactory::createInterface() {return new IOSInterfaceController();
}

main.cpp

#include <iostream>
#include <mutex>
#include "myclass.h"int main() {ControllerFactory *factory;Controller *op, *in;factory = new AndroidControllerFactory();op = factory->createOperation();in = factory->createInterface();delete factory;delete op;delete in;factory = new IOSControllerFactory();op = factory->createOperation();in = factory->createInterface();delete factory;delete op;delete in;return 0;
}

http://www.hkea.cn/news/101570/

相关文章:

  • 服务器托管是啥搜索引擎优化排名培训
  • 山西手机网站建设网址大全123
  • b2c平台有哪些平台网址新区seo整站优化公司
  • WordPress突然全站404网站如何添加友情链接
  • 复制别人网站做第一站seo短视频网页入口引流下载
  • 基层建设论文收录在哪个网站百度统计api
  • 购买主机可以做网站吗楚雄今日头条新闻
  • 深圳专业网站建设公司哪家好宁波网络营销公司
  • ps做电商网站流程图百度图片识别搜索引擎
  • 做电影网站程序好用武汉网站建设推广公司
  • 如何做b2c网站下列关于友情链接说法正确的是
  • 网站开发中网页上传seo在线网站推广
  • 网站建设报价流程免费培训网站
  • 聊城网站建设服务好最新网域查询入口
  • 一般网站建设流程有哪些步骤官方百度app下载安装
  • 档案网站建设的步骤八大营销方式有哪几种
  • 手机网站免费制作平台semseo
  • 周口市做网站小红书seo排名
  • 网站开始怎么做的ps培训
  • 去哪个网站找题目给孩子做保定百度首页优化
  • 五道口网站建设惠州seo外包服务
  • 如何查看网站是否备案企业宣传册
  • 好的网站建设公司排名互联网宣传推广
  • 上海买二手房做哪个网站好seo快速排名优化
  • 十大中国网站制作免费广告
  • wordpress 文章主题关键词推广seo
  • 佛山网站建设佛山网络推广代运营公司靠谱吗
  • 贵阳疫情最新消息站内seo优化
  • wordpress相关问题深圳百度关键字优化
  • 做国珍新时代 网站陕西seo顾问服务