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

做网站站怎么赚钱吗西安网站定制开发

做网站站怎么赚钱吗,西安网站定制开发,做一个微信小程序多少钱,武汉企业网站推广收费这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。   工厂模式主要使用了C的多态特性。将存在继承关系的类&a…

  这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
  工厂模式主要使用了C++的多态特性。将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建。
  工厂模式的实现方式可分别简单工厂模式、工厂方法模式、抽象工厂模式,每个实现方式都存在优和劣。
  以制鞋厂为例对这三种工厂模式进行举例说明

1. 简单工厂模式

1.1 UML图

类比情形:鞋厂可以指定生产耐克、阿迪达斯和李宁牌子的鞋子。哪个鞋炒的火爆,老板就生产哪个,看形势生产。
UML图如下:
在这里插入图片描述
一个工厂类包含如下三要素:

  • 工厂类:工厂模式的核心类,会定义一个用于创建指定的具体实例对象的接口。
  • 抽象产品类:是具体产品类的继承的父类或实现的接口。
  • 具体产品类:工厂类所创建的对象就是此具体产品实例。

1.2 具体代码实现

/*** Shoes为鞋子的抽象类(基类),接口函数为Show(),用于显示鞋子广告。* NiKeShoes、AdidasShoes、LiNingShoes为具体鞋子的类,分别是耐克、阿迪达斯和李 宁鞋牌的鞋,它们都继承于Shoes抽象类。*/
#include<iostream>
using namespace std;// 鞋子抽象类
class Shoes
{
public:virtual ~Shoes() {}virtual void Show() = 0; // 纯虚函数在子类实现
};// 耐克鞋子
class NiKeShoes : public Shoes
{
public:void Show(){std::cout << "我是耐克球鞋,我的广告语:Just do it" << std::endl;}
};// 阿迪达斯鞋子
class AdidasShoes : public Shoes
{
public:void Show(){std::cout << "我是阿迪达斯球鞋,我的广告语:Impossible is nothing" << std::endl;}
};// 李宁鞋子
class LiNingShoes : public Shoes
{
public:void Show(){std::cout << "我是李宁球鞋,我的广告语:Everything is possible" << std::endl;}
};enum SHOES_TYPE
{NIKE,LINING,ADIDAS
};// 总鞋厂
class ShoesFactory
{
public:// 根据鞋子类型创建对应的鞋子对象Shoes *CreateShoes(SHOES_TYPE type){switch (type){case NIKE:return new NiKeShoes();break;case LINING:return new LiNingShoes();break;case ADIDAS:return new AdidasShoes();break;default:return NULL;break;}}
};int main()
{ShoesFactory shoesfactory;Shoes* ptr_nike_shoes = shoesfactory.CreateShoes(NIKE);if(ptr_nike_shoes != NULL){ptr_nike_shoes->Show();delete ptr_nike_shoes;ptr_nike_shoes = NULL;} Shoes* ptr_adidas_shoes = shoesfactory.CreateShoes(ADIDAS);if(ptr_adidas_shoes != NULL){ptr_adidas_shoes->Show();delete ptr_adidas_shoes;ptr_adidas_shoes = NULL;}Shoes* ptr_lining_shoes = shoesfactory.CreateShoes(LINING);if(ptr_lining_shoes != NULL){ptr_lining_shoes->Show();delete ptr_lining_shoes;ptr_lining_shoes = NULL;}return 0;    
}

2. 工厂方法模式

2.1 UML图

**类比情形:**现各类鞋子抄的非常火热,于是为了大量生产每种类型的鞋子,则要针对不同品牌的鞋子开设独立的生产线,那么每个生产线就只能生产同类型品牌的鞋。
UML图:
在这里插入图片描述
工厂方法模式的结构组成:

  • 抽象工厂类:工厂方法模式的核心类,提供创建具体产品的接口,由具体工厂类实现。
  • 具体工厂类:继承于抽象工厂,实现创建对应具体产品对象的方式。
  • 抽象产品类:它是具体产品继承的父类(基类)。
  • 具体产品类:具体工厂所创建的对象,就是此类。

2.2 具体代码实现

#include<iostream>
using namespace std;// 鞋子抽象类
class Shoes
{
public:virtual ~Shoes() {}virtual void Show() = 0; // 纯虚函数在子类实现
};// 耐克鞋子
class NiKeShoes : public Shoes
{
public:void Show(){std::cout << "我是耐克球鞋,我的广告语:Just do it" << std::endl;}
};// 阿迪达斯鞋子
class AdidasShoes : public Shoes
{
public:void Show(){std::cout << "我是阿迪达斯球鞋,我的广告语:Impossible is nothing" << std::endl;}
};// 李宁鞋子
class LiNingShoes : public Shoes
{
public:void Show(){std::cout << "我是李宁球鞋,我的广告语:Everything is possible" << std::endl;}
};// 总鞋厂实现
class ShoesFactory
{
public:virtual Shoes *CreateShoes() = 0;virtual ~ShoesFactory() {}
};// 耐克生产鞋厂
class NikeProducer : public ShoesFactory
{
public:Shoes *CreateShoes(){return new NiKeShoes();}
};// 阿迪达斯生产鞋厂
class AdidasProductor : public ShoesFactory
{
public:Shoes *CreateShoes(){return new AdidasShoes();}
};// 李宁生产鞋厂
class LiningProductor : public ShoesFactory
{
public:Shoes *CreateShoes(){return new LiNingShoes;}
};int main()
{// ================ 生产耐克流程 ==================== //// 鞋厂开设耐克生产线ShoesFactory *niKeProducer = new NikeProducer();// 耐克生产线产出球鞋Shoes *nikeShoes = niKeProducer->CreateShoes();// 耐克球鞋广告喊起nikeShoes->Show();// 释放资源delete nikeShoes;delete niKeProducer;// ================ 生产阿迪达斯流程 ==================== //// 鞋厂开设阿迪达斯生产者ShoesFactory *adidasProducer = new AdidasProductor();// 阿迪达斯生产线产出球鞋Shoes *adidasShoes = adidasProducer->CreateShoes();// 阿迪达斯球鞋广喊起adidasShoes->Show();// 释放资源delete adidasShoes;delete adidasProducer;return 0;
}

3. 抽象工程模式

场景类比:鞋厂为了扩大了业务,不仅只生产鞋子,把运动品牌的衣服也一起生产了。

3.1 UML图

在这里插入图片描述

3.2 具体代码实现

抽象工厂模式的结构组成(和工厂方法模式一样):

  • 抽象工厂类:工厂方法模式的核心类,提供创建具体产品的接口,由具体工厂类实现。
  • 具体工厂类:继承于抽象工厂,实现创建对应具体产品对象的方式。
  • 抽象产品类:它是具体产品继承的父类(基类)。
  • 具体产品类:具体工厂所创建的对象,就是此类。
/*
Clothe和Shoes,分别为衣服和鞋子的抽象产品类。
NiKeClothe和NiKeShoes,分别是耐克衣服和耐克衣服的具体产品类。
*/
#include <iostream>
using namespace std;// 衣服基类
class Clothe{
public:virtual void Show() = 0;virtual ~Clothe(){}
};class NikeClothe : public Clothe{
public:void Show(){std::cout << "我是耐克衣服,时尚我最在行!" << std::endl;}
};// 鞋子基类
class Shoes{
public:virtual void Show() = 0;virtual ~Shoes(){};
};class NikeShoes : public Shoes{
public:void Show(){std::cout << "我是耐克球鞋,让你酷起来!" << std::endl;}
};// 总厂
class Factory{
public:virtual Shoes *CreateShoes() = 0;virtual Clothe *CreateClothe() = 0;virtual ~Factory() {}
};class NikeProducer: public Factory{
public:Shoes *CreateShoes(){return new NikeShoes();}Clothe *CreateClothe(){return new NikeClothe();}
};int main(int argc, char *argv[]){Factory *nike_producer = new NikeProducer();Clothe *nike_clothe = nike_producer->CreateClothe();Shoes *nike_shoes = nike_producer->CreateShoes();nike_clothe->Show();nike_shoes->Show();delete nike_producer;delete nike_clothe;delete nike_shoes;
}

【参考连接】

https://zhuanlan.zhihu.com/p/83535678
https://zhuanlan.zhihu.com/p/83537599(进阶版工厂类)

http://www.laogonggong.com/news/68.html

相关文章:

  • 网站开发的公司电话百度快快速排名
  • 站酷设计网页版如何在百度提交网站
  • 建筑工程 技术支持 东莞网站建设青岛谷歌推广
  • 做韩服的视频网站个人网站建设
  • 无锡网站开发引擎优化搜索
  • 网站开发类的合同百度图片搜索图片识别
  • 做哪个网站有效果如何制作一个简单的网页
  • 西安网站策划设计最基本的网站设计
  • 制作企业网站的公司seo咨询师招聘
  • 文山北京网站建设行业网络营销
  • 南海网站智能推广企业营销推广方案
  • 邵阳做网站seo大全
  • 网站开发都是模板关键词优化到首页怎么做到的
  • 网站加入wordpress图片识别 在线百度识图
  • 吉林长春火车站官网自动点击关键词软件
  • 济宁网上做科目一的网站网站seo搜索
  • wordpress博客添加标签seo站长工具平台
  • 计算机网络技术培训青岛百度整站优化服务
  • 微信做网站推广赚钱吗上海搜索引擎关键词优化
  • 空包网站怎么做北大青鸟培训机构官网
  • 网站上的产品介绍如何做首页优化排名
  • 加拿大28网站开发百度营销推广官网
  • 河南网站建设软件百度排名点击软件
  • 做国珍新时代 网站网络营销期末考试题库
  • 当今做网站的流行互联网推广平台有哪些公司
  • 三合一企业网站模板网页浏览器
  • 比较好的网站设计公司怎样看网页的友情链接
  • 宁波做外贸网站一键生成app制作器
  • info哪个网站续费便宜seo综合查询站长工具关键词
  • seo系统源码西安seo关键字优化