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

加拿大服务器做网站河南建设厅二建公示网站首页

加拿大服务器做网站,河南建设厅二建公示网站首页,wordpress启用域名邮,中小学图书馆网站建设文章目录 前言代码仓库简单工厂模式#xff08;Simple Factory#xff09;工厂方法模式#xff08;Factory Method#xff09;抽象工厂模式#xff08;Abstract Factory#xff09;总结参考资料作者的话 前言 简单工厂、工厂方法和抽象工厂模式#xff08;创建型设计模… 文章目录 前言代码仓库简单工厂模式Simple Factory工厂方法模式Factory Method抽象工厂模式Abstract Factory总结参考资料作者的话 前言 简单工厂、工厂方法和抽象工厂模式创建型设计模式的 C 代码示例模板。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) 简单工厂模式Simple Factory 结构 抽象产品类具体产品类 A具体产品类 B简单工厂类简单工厂类的静态方法创建具体产品对象 A 和具体产品对象 B 核心 继承多态一个工厂创建多类产品 代码 #include iostream #include string #include memoryusing std::cerr; using std::cout; using std::endl; using std::make_unique; using std::string; using std::unique_ptr;// 抽象产品类 class AbstractProduct { public:AbstractProduct() default;virtual ~AbstractProduct() default;virtual void func() 0; };// 具体产品类 A class ConcreteProductA : public AbstractProduct { public:ConcreteProductA() default;~ConcreteProductA() override default;void func() override{cout ConcreteProductA endl;} };// 具体产品类 B class ConcreteProductB : public AbstractProduct { public:ConcreteProductB() default;~ConcreteProductB() override default;void func() override{cout ConcreteProductB endl;} };// 简单工厂类 class SimpleFactory { public:// 静态方法依据类型创建不同的具体产品static unique_ptrAbstractProduct create_concrete_product(const string concrete_product_type){if (concrete_product_type A){return make_uniqueConcreteProductA();}else if (concrete_product_type B){return make_uniqueConcreteProductB();}else{cerr Unknown type of concrete product endl;return nullptr;}} };// 客户端 int main() {// 使用简单工厂创建不同类型的具体产品unique_ptrAbstractProduct concrete_product_a SimpleFactory::create_concrete_product(A); // 创建具体产品对象 Aif (concrete_product_a ! nullptr){concrete_product_a-func();}unique_ptrAbstractProduct concrete_product_b SimpleFactory::create_concrete_product(B); // 创建具体产品对象 Bif (concrete_product_b ! nullptr){concrete_product_b-func();}unique_ptrAbstractProduct concrete_product_c SimpleFactory::create_concrete_product(C); // 创建具体产品对象 Cif (concrete_product_c ! nullptr){concrete_product_c-func();}return 0; } /* 输出 ConcreteProductA ConcreteProductB Unknown type of concrete product */工厂方法模式Factory Method 结构 抽象产品类具体产品类 A具体产品类 B抽象工厂类具体工厂类 A具体工厂类 B具体工厂对象 A 的方法创建具体产品对象 A具体工厂对象 B 的方法创建具体产品对象 B 核心 继承多态一类工厂创建一类产品 代码 #include iostream #include memoryusing std::cout; using std::endl; using std::make_unique; using std::unique_ptr;// 抽象产品类 class AbstractProduct { public:AbstractProduct() default;virtual ~AbstractProduct() default;virtual void func() 0; };// 具体产品类 A class ConcreteProductA : public AbstractProduct { public:ConcreteProductA() default;~ConcreteProductA() override default;void func() override{cout ConcreteProductA endl;} };// 具体产品类 B class ConcreteProductB : public AbstractProduct { public:ConcreteProductB() default;~ConcreteProductB() override default;void func() override{cout ConcreteProductB endl;} };// 抽象工厂类 class AbstractFactory { public:AbstractFactory() default;virtual ~AbstractFactory() default;virtual unique_ptrAbstractProduct create_concrete_product() const 0; };// 具体工厂类 A class ConcreteFactoryA : public AbstractFactory { public:ConcreteFactoryA() default;~ConcreteFactoryA() override default;inline unique_ptrAbstractProduct create_concrete_product() const override{return make_uniqueConcreteProductA();} };// 具体工厂类 B class ConcreteFactoryB : public AbstractFactory { public:ConcreteFactoryB() default;~ConcreteFactoryB() override default;inline unique_ptrAbstractProduct create_concrete_product() const override{return make_uniqueConcreteProductB();} };// 客户端 int main() {// 使用工厂方法创建不同类型的具体产品unique_ptrAbstractFactory concrete_factory_a make_uniqueConcreteFactoryA(); // 创建具体工厂对象 Aunique_ptrAbstractProduct concrete_product_a concrete_factory_a-create_concrete_product(); // 创建具体产品对象 Aconcrete_product_a-func();unique_ptrAbstractFactory concrete_factory_b make_uniqueConcreteFactoryB(); // 创建具体工厂对象 Bunique_ptrAbstractProduct concrete_product_b concrete_factory_b-create_concrete_product(); // 创建具体产品对象 Bconcrete_product_b-func();return 0; } /* 输出 ConcreteProductA ConcreteProductB */抽象工厂模式Abstract Factory 结构 抽象产品类 A具体产品类 A1具体产品类 B1抽象产品类 B具体产品类 B1具体产品类 B2抽象工厂类1具体工厂类1抽象工厂类2具体工厂类2具体工厂对象1 的方法创建具体产品对象 A1 和 具体产品对象 B1具体工厂对象2 的方法创建具体产品对象 A2 和 具体产品对象 B2 核心 继承多态产品和工厂形成二维结构工厂1创建产品 A1 和 B1工厂2创建产品 A2 和 B2 代码 #include iostream #include memoryusing std::cout; using std::endl; using std::make_unique; using std::unique_ptr;// 抽象产品类 A class AbstractProductA { public:AbstractProductA() default;virtual ~AbstractProductA() default;virtual void func() 0; };// 具体产品类 A1 class ConcreteProductA1 : public AbstractProductA { public:ConcreteProductA1() default;~ConcreteProductA1() override default;void func() override{cout ConcreteProductA1 endl;} };// 具体产品类 A2 class ConcreteProductA2 : public AbstractProductA { public:ConcreteProductA2() default;~ConcreteProductA2() override default;void func() override{cout ConcreteProductA2 endl;} };// 抽象产品类 B class AbstractProductB { public:AbstractProductB() default;virtual ~AbstractProductB() default;virtual void func() 0; };// 具体产品类 B1 class ConcreteProductB1 : public AbstractProductB { public:ConcreteProductB1() default;~ConcreteProductB1() override default;void func() override{cout ConcreteProductB1 endl;} };// 具体产品类 B2 class ConcreteProductB2 : public AbstractProductB { public:ConcreteProductB2() default;~ConcreteProductB2() override default;void func() override{cout ConcreteProductB2 endl;} };// 抽象工厂类 class AbstractFactory { public:AbstractFactory() default;virtual ~AbstractFactory() default;virtual unique_ptrAbstractProductA create_product_a() const 0;virtual unique_ptrAbstractProductB create_product_b() const 0; };// 具体工厂类 1 class ConcreteFactory1 : public AbstractFactory { public:ConcreteFactory1() default;virtual ~ConcreteFactory1() default;inline unique_ptrAbstractProductA create_product_a() const override{return make_uniqueConcreteProductA1();}inline unique_ptrAbstractProductB create_product_b() const override{return make_uniqueConcreteProductB1();} };// 具体工厂类 2 class ConcreteFactory2 : public AbstractFactory { public:ConcreteFactory2() default;virtual ~ConcreteFactory2() default;inline unique_ptrAbstractProductA create_product_a() const override{return make_uniqueConcreteProductA2();}inline unique_ptrAbstractProductB create_product_b() const override{return make_uniqueConcreteProductB2();} };// 客户端 int main() {// 使用抽象工厂创建不同类型的具体产品unique_ptrAbstractFactory concrete_factory_1 make_uniqueConcreteFactory1(); // 创建具体工厂对象1unique_ptrAbstractProductA concrete_product_a1 concrete_factory_1-create_product_a(); // 创建具体产品对象 A1unique_ptrAbstractProductB concrete_product_b1 concrete_factory_1-create_product_b(); // 创建具体产品对象 B1concrete_product_a1-func();concrete_product_b1-func();unique_ptrAbstractFactory concrete_factory_2 make_uniqueConcreteFactory2(); // 创建具体工厂2unique_ptrAbstractProductA concrete_product_a2 concrete_factory_2-create_product_a(); // 创建具体产品对象 B1unique_ptrAbstractProductB concrete_product_b2 concrete_factory_2-create_product_b(); // 创建具体产品对象 B1concrete_product_a2-func();concrete_product_b2-func();return 0; } /* 输出 ConcreteProductA1 ConcreteProductB1 ConcreteProductA2 ConcreteProductB2 */总结 简单工厂、工厂方法和抽象工厂模式创建型设计模式的 C 代码示例模板。 参考资料 【精选】创建型设计模式总结_夜悊的博客-CSDN博客 作者的话 感谢参考资料的作者/博主作者夜悊版权所有转载请注明出处谢谢~如果文章对你有帮助请点个赞或加个粉丝吧你的支持就是作者的动力~文章在描述时有疑惑的地方请留言定会一一耐心讨论、解答文章在认识上有错误的地方, 敬请批评指正望读者们都能有所收获
http://wiki.neutronadmin.com/news/324942/

相关文章:

  • 做网站一般多少印刷厂网站建设
  • 网约车平台app网站建设抖音推广seo
  • 免费网站平台网站推广策划方式
  • 南京网站制作域名wordpress响应慢原因
  • 广州网站制作有哪些ai网页设计教程
  • 低价网站建设哪家更好跑步机网站建设思维导图
  • 重庆网站建设网搜科技建筑公司是干什么的
  • 北京科技网站开发如何创立自己的公司
  • 网站建设 思维导图wordpress js验证码
  • 郑州网站推qq建设网站首页
  • 网站设计的主题通江县城乡建设局门户网站
  • 手机网站建设公司企业电子邮箱格式
  • 中国做健身补剂的网站个人如何注册公司流程
  • 网站建设管理调研提纲99作文网
  • 大型购物网站开发网络管理系统密码
  • 马鞍山专业网站制作做网站的标准
  • 编制网站建设策划书浙江网站建设售后保障
  • 怎么注销网站查备案企业网络建设
  • 长春网站制作推广平面广告图片
  • 网站素材站做商城网站在哪里注册营业执照
  • 衡阳seo网站推广wordpress 树状目录结构
  • 生鲜网站策划静态网站怎么优化
  • html5网站在线制作.电子商务网站建设的核心是
  • 怎么开发创建网站教程广州做网站商城的公司
  • 微商货源网站源码济南seo官网优化
  • 建设一个功能简单的网站一个做品牌零食特卖的网站
  • 新乡网站建设服务制作网站深圳
  • 建设银行网站会员用户名格式网站建设费会计科目
  • 贞丰县建设局网站网站查询 工信部
  • 零基础建设网站教程wordpress 别名一致