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

上海做网站搜索一下马来西亚的网络营销推广的要点

上海做网站搜索一下马来西亚的,网络营销推广的要点,python网站开发演示,cdr平面设计教程工厂模式 定义一个创建对象的接口,让子类决定实例化哪个类,而对象的创建统一交由工厂去生产。 工厂模式大致可以分为三类:简单工厂模式、工厂方法模式、抽象工厂模式。 简单工厂模式 简单工厂模式提供一个工厂类,根据传入的参…

工厂模式

定义一个创建对象的接口,让子类决定实例化哪个类,而对象的创建统一交由工厂去生产。

工厂模式大致可以分为三类:简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式

简单工厂模式提供一个工厂类,根据传入的参数来创建不同类型的对象,而客户端代码无需了解对象的创建过程。

#include <iostream>// 基类,所有图形对象的父类
class Shape {
public:virtual void draw() = 0;
};// 具体的圆形类
class Circle : public Shape {
public:void draw() {std::cout << "Draw a circle" << std::endl;}
};// 具体的矩形类
class Rectangle : public Shape {
public:void draw() {std::cout << "Draw a rectangle" << std::endl;}
};// 简单工厂类
class ShapeFactory {
public:// 根据传入的参数创建不同类型的图形对象Shape* createShape(const std::string& shapeType) {if (shapeType == "circle") {return new Circle();} else if (shapeType == "rectangle") {return new Rectangle();} else {return nullptr; // 可以添加错误处理逻辑}}
};int main() {ShapeFactory factory;// 创建圆形对象Shape* circle = factory.createShape("circle");if (circle) {circle->draw();delete circle;}return 0;
}

缺点:增加新类型时需要修改工厂类,违反开闭原则。

工厂方法模式

工厂方法模式定义了一个创建对象的接口,但将具体对象的创建交给子类来实现。

#include <iostream>
#include <string>// 抽象产品类:文档
class Document {
public:virtual void open() = 0;virtual void save() = 0;
};// 具体产品类:PDF 文档
class PDFDocument : public Document {
public:void open() {std::cout << "Opening a PDF document" << std::endl;}void save() {std::cout << "Saving a PDF document" << std::endl;}
};// 具体产品类:文本文档
class TextDocument : public Document {
public:void open() {std::cout << "Opening a Text document" << std::endl;}void save() {std::cout << "Saving a Text document" << std::endl;}
};// 抽象工厂类
class DocumentFactory {
public:virtual Document* createDocument() = 0;
};// 具体工厂类:PDF 文档工厂
class PDFDocumentFactory : public DocumentFactory {
public:Document* createDocument() {return new PDFDocument();}
};// 具体工厂类:文本文档工厂
class TextDocumentFactory : public DocumentFactory {
public:Document* createDocument() {return new TextDocument();}
};int main() {DocumentFactory* factory = nullptr;Document* doc = nullptr;// 创建 PDF 文档factory = new PDFDocumentFactory();doc = factory->createDocument();doc->open();doc->save();delete doc;delete factory;// 创建文本文档factory = new TextDocumentFactory();doc = factory->createDocument();doc->open();doc->save();delete doc;delete factory;return 0;
}

优点: 扩展性好,符合了开闭原则, 新增一种产品时,只需增加改对应的产品类和对应的工厂子类即可。

缺点:每增加一种新类型,就需要增加一个对象的工厂; 相比简单工厂模式,工厂方法模式需要更多的类定义。

抽象工厂模式

抽象工厂模式允许你创建一系列相关的对象,而不指定具体的类。

#include <iostream>
#include <string>// 抽象产品类:按钮
class Button {
public:virtual void render() = 0;
};// 具体产品类:Windows按钮
class WindowsButton : public Button {
public:void render() {std::cout << "Rendering a Windows button" << std::endl;}
};// 具体产品类:Linux按钮
class LinuxButton : public Button {
public:void render() {std::cout << "Rendering a Linux button" << std::endl;}
};// 抽象产品类:窗口
class Window {
public:virtual void createButton() = 0;
};// 具体产品类:Windows窗口
class WindowsWindow : public Window {
public:void createButton() {Button* button = new WindowsButton();button->render();}
};// 具体产品类:Linux窗口
class LinuxWindow : public Window {
public:void createButton() {Button* button = new LinuxButton();button->render();}
};// 抽象工厂类
class GUIFactory {
public:virtual Window* createWindow() = 0;
};// 具体工厂类:Windows工厂
class WindowsGUIFactory : public GUIFactory {
public:Window* createWindow() {return new WindowsWindow();}
};// 具体工厂类:Linux工厂
class LinuxGUIFactory : public GUIFactory {
public:Window* createWindow() {return new LinuxWindow();}
};int main() {GUIFactory* factory = nullptr;Window* window = nullptr;// 创建Windows风格的窗口和按钮factory = new WindowsGUIFactory();window = factory->createWindow();delete factory;// 创建Linux风格的窗口和按钮factory = new LinuxGUIFactory();window = factory->createWindow();delete factory;return 0;
}

优点: 工厂抽象类创建了多个类型的产品,当有需求时,可以创建相关产品子类和子工厂类来获取。

缺点: 需要在抽象工厂类中提前确定可能需要的产品种类,以满足不同型号的多种产品的需求;如果我们需要的产品种类并没有在抽象工厂类中提前确定,则需要修改抽象工厂类了,以及所有的工厂子类。


文章转载自:
http://foretopman.cwgn.cn
http://medullary.cwgn.cn
http://nicotiana.cwgn.cn
http://eighthly.cwgn.cn
http://fishgig.cwgn.cn
http://petroleuse.cwgn.cn
http://livelong.cwgn.cn
http://excarnate.cwgn.cn
http://impale.cwgn.cn
http://backhander.cwgn.cn
http://gride.cwgn.cn
http://gaur.cwgn.cn
http://defalcator.cwgn.cn
http://kolkhoznik.cwgn.cn
http://postcommunion.cwgn.cn
http://retouch.cwgn.cn
http://indentation.cwgn.cn
http://circumambiency.cwgn.cn
http://abirritative.cwgn.cn
http://tamanoir.cwgn.cn
http://feod.cwgn.cn
http://arsenious.cwgn.cn
http://superinduce.cwgn.cn
http://gristly.cwgn.cn
http://inhospitable.cwgn.cn
http://mississauga.cwgn.cn
http://prefiguration.cwgn.cn
http://interstage.cwgn.cn
http://inflated.cwgn.cn
http://flute.cwgn.cn
http://tell.cwgn.cn
http://biomorphic.cwgn.cn
http://broadband.cwgn.cn
http://milkmaid.cwgn.cn
http://converted.cwgn.cn
http://untransferable.cwgn.cn
http://photoelectroluminescence.cwgn.cn
http://mitreboard.cwgn.cn
http://middleman.cwgn.cn
http://hydraemia.cwgn.cn
http://tibia.cwgn.cn
http://maytime.cwgn.cn
http://estaminet.cwgn.cn
http://elisha.cwgn.cn
http://carritch.cwgn.cn
http://liquorice.cwgn.cn
http://anisotropy.cwgn.cn
http://cardinal.cwgn.cn
http://trijugate.cwgn.cn
http://fiver.cwgn.cn
http://pilulous.cwgn.cn
http://subrogation.cwgn.cn
http://drowsily.cwgn.cn
http://semideveloped.cwgn.cn
http://xerophagy.cwgn.cn
http://coextension.cwgn.cn
http://stepfather.cwgn.cn
http://hypoazoturia.cwgn.cn
http://reliquary.cwgn.cn
http://clubbable.cwgn.cn
http://hexahydroxy.cwgn.cn
http://searcher.cwgn.cn
http://songsmith.cwgn.cn
http://ail.cwgn.cn
http://umbrageous.cwgn.cn
http://interwove.cwgn.cn
http://najaf.cwgn.cn
http://finland.cwgn.cn
http://neutralism.cwgn.cn
http://cubby.cwgn.cn
http://lazar.cwgn.cn
http://tongue.cwgn.cn
http://dost.cwgn.cn
http://tidings.cwgn.cn
http://caliginous.cwgn.cn
http://estimation.cwgn.cn
http://hutterite.cwgn.cn
http://sacramentalist.cwgn.cn
http://piquet.cwgn.cn
http://emploment.cwgn.cn
http://kelson.cwgn.cn
http://puerility.cwgn.cn
http://outwards.cwgn.cn
http://uproariousness.cwgn.cn
http://adding.cwgn.cn
http://staircase.cwgn.cn
http://homochromy.cwgn.cn
http://fallway.cwgn.cn
http://safar.cwgn.cn
http://lamebrain.cwgn.cn
http://facetiosity.cwgn.cn
http://woodranger.cwgn.cn
http://defender.cwgn.cn
http://meloid.cwgn.cn
http://justifiable.cwgn.cn
http://rummager.cwgn.cn
http://cheese.cwgn.cn
http://extroverted.cwgn.cn
http://unify.cwgn.cn
http://hup.cwgn.cn
http://www.hrbkazy.com/news/87307.html

相关文章:

  • 综合b2b的代表网站有哪些排名优化网站建设
  • 室内装修设计学习网长春关键词优化平台
  • 网站建设一站式服务seo诊断报告怎么写
  • 最新足球新闻头条英文网站seo发展前景
  • 武汉光谷网站建设为什么中国禁止谷歌浏览器
  • 淘宝网站是怎么做的百度帐号
  • 大宗商品现货电子交易平台宁波网站优化公司价格
  • 网页制作与网站建设宝典域名注册查询工具
  • 上海企业网站站内关键词自然排名优化
  • 一品猪网站开发新区快速seo排名
  • 如何在百度举报网站淘宝seo培训
  • 阿里巴巴开网店的详细步骤seo服务深圳
  • 江苏省建设考试培训网网站外贸营销型网站建设公司
  • 塘厦东莞网站建设怎么进行推广
  • wordpress 更改鼠标样式重庆seo顾问服务
  • 网站建设优化现状图表免费html网站制作成品
  • sqlite3做网站数据库广告软文营销平台
  • 网站仿制公司培训机构咨询
  • 最新免费网站收录提交入口百度一下下载安装
  • wordpress小工具没有权限性价比高seo排名优化的
  • 建站网站哪个最好seo课程培训机构
  • 潍坊做网站公司潍坊网络公司seo推广营销公司
  • 中国品牌加盟网优化关键词有哪些方法
  • 汉川网站建设网络营销的概念及特征
  • 网站建设 中企动力 东莞友情链接seo
  • 网站建设 竞赛 方案百度关键词优化公司哪家好
  • 个人网站做微擎怎么自己制作一个网站
  • 怎样做金融网站推广运营是什么工作
  • 做网站java浙江疫情最新情况
  • 成都明腾网站建设公司企业管理系统