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

免费发布信息的网站企业网d1net的功能

免费发布信息的网站,企业网d1net的功能,wordpress 会员权限,wordpress 问答模块介绍 提供了一个创建一系列相关或相互依赖的对象的接口#xff0c;而无须指定它们具体的类。抽象工厂模式又称为Kit模式#xff0c;它是一种对象创建型模式。 在抽象工厂模式中#xff0c;每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品#xff0c;这些产品构…介绍 提供了一个创建一系列相关或相互依赖的对象的接口而无须指定它们具体的类。抽象工厂模式又称为Kit模式它是一种对象创建型模式。 在抽象工厂模式中每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品这些产品构成了一个产品族。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLASS_H#include iostreamclass 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_Hmyclass.cpp // // Created by yuwp on 2024/1/12. //#include myclass.h#include myclass.hConcreteProductA::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.hint 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 iostreamclass 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_Hmyclass.cpp // // Created by yuwp on 2024/1/12. //#include myclass.h#include myclass.hAndroidOperationController::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.hint 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/14471520/

相关文章:

  • 潍坊做电商的网站建设手机网站怎么布局
  • 程序员和网站建设wordpress 哪个好
  • wordpress怎么添加邮箱跟我学seo从入门到精通
  • 温州建设集团招聘信息网站网站转备案
  • 影院网站建设主管vi系统整套设计
  • 招商加盟的网站应该怎么做前端程序员需要掌握哪些基本技术
  • 如何进入网站后台管理系统济南咨询行业网站开发
  • 嘉兴网站备案去哪里十堰秦楚网主页
  • 济南网站建设方案案例展示电脑维护网站模板
  • 网站咋做推广wordpress做菜鸟教程
  • 江北网站建设价格wordpress编辑小工具代码
  • 网站建设与管理模拟题1在网站怎么做代销
  • 网站开发实战演练外贸seo优化方法
  • 中国可以做交互的网站wordpress多用户商城主题
  • 无锡高端网站建设哪家好如何做网站数据分析
  • 赛罕区城乡建设局网站昆明网页设计培训学校
  • 企业网站建设需要哪些费用北京哪里制作网站
  • 有哪些网站可以做微商网站模板免费下载php
  • 如何创建私人网站北京公司做网站
  • 站长广告联盟平台网站备案查询背景布
  • 医院网站建设合同范本石家庄网站制作软件
  • 贵阳哪些公司建网站国内营销策划咨询公司
  • 网站建设发信息汕头市作风建设的网站
  • 微网站 杭州网站开发步骤说明书是什么
  • 泉州建设工程质量网站石家庄手机建网站
  • 商用营销型网站建设自助网站建设厦门网站制作
  • 邯郸做网站哪里好广州网站排名优化开发
  • 网站建设的域名高校网站群建设的公司有哪些
  • 黄山网站设计做油漆稀料用哪个网站
  • 免费网站维护什么网站可以做电影投资