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

莱州网站定制wordpress 粘贴表格

莱州网站定制,wordpress 粘贴表格,国外做珠宝裸石的网站,青海省住建局和建设厅门户网站工厂方法模式(Factory Method)是创建型设计模式的一种,它定义了一个创建对象的接口,但将具体对象的实例化延迟到子类中。这种模式通过封装对象创建过程,实现了“创建与使用分离”,提高了代码的灵活性和可扩…

工厂方法模式(Factory Method)是创建型设计模式的一种,它定义了一个创建对象的接口,但将具体对象的实例化延迟到子类中。这种模式通过封装对象创建过程,实现了“创建与使用分离”,提高了代码的灵活性和可扩展性。

核心角色

工厂方法模式包含4个关键角色:

  1. 产品(Product):定义所有具体产品的公共接口。
  2. 具体产品(ConcreteProduct):实现产品接口的具体类。
  3. 工厂(Creator):声明工厂方法(用于创建产品),返回产品类型。
  4. 具体工厂(ConcreteCreator):实现工厂方法,返回具体产品实例。

实现示例

假设我们需要设计一个文档编辑器,支持创建不同类型的文档(如文本文档、表格文档),使用工厂方法模式的实现如下:

#include <iostream>
#include <string>// 1. 产品接口(Product)
class Document {
public:virtual void open() = 0;virtual void save() = 0;virtual ~Document() = default; // 虚析构函数
};// 2. 具体产品A(ConcreteProduct)
class TextDocument : public Document {
public:void open() override {std::cout << "打开文本文档" << std::endl;}void save() override {std::cout << "保存文本文档" << std::endl;}
};// 2. 具体产品B(ConcreteProduct)
class SpreadsheetDocument : public Document {
public:void open() override {std::cout << "打开表格文档" << std::endl;}void save() override {std::cout << "保存表格文档" << std::endl;}
};// 3. 工厂接口(Creator)
class Application {
public:// 工厂方法(纯虚函数,由子类实现)virtual Document* createDocument() = 0;// 业务方法(使用产品)void newDocument() {Document* doc = createDocument(); // 调用工厂方法创建产品doc->open();// 其他操作...delete doc; // 释放资源}virtual ~Application() = default;
};// 4. 具体工厂A(ConcreteCreator)
class TextEditor : public Application {
public:// 实现工厂方法:创建文本文档Document* createDocument() override {return new TextDocument();}
};// 4. 具体工厂B(ConcreteCreator)
class SpreadsheetEditor : public Application {
public:// 实现工厂方法:创建表格文档Document* createDocument() override {return new SpreadsheetDocument();}
};// 客户端代码
int main() {// 创建文本编辑器(具体工厂)Application* textApp = new TextEditor();textApp->newDocument(); // 内部会创建文本文档// 创建表格编辑器(具体工厂)Application* sheetApp = new SpreadsheetEditor();sheetApp->newDocument(); // 内部会创建表格文档// 释放资源delete textApp;delete sheetApp;return 0;
}

代码解析

  1. 产品接口(Document):定义了所有文档的通用行为(open()save())。
  2. 具体产品TextDocumentSpreadsheetDocument 分别实现了文本文档和表格文档的具体功能。
  3. 工厂接口(Application):声明了工厂方法 createDocument(),并通过 newDocument() 方法使用产品(体现“创建与使用分离”)。
  4. 具体工厂TextEditorSpreadsheetEditor 分别实现了创建文本文档和表格文档的工厂方法。

核心优势

  1. 解耦:客户端无需知道具体产品的类名,只需通过工厂接口创建对象。
  2. 可扩展性:新增产品时,只需添加对应的具体产品类和具体工厂类,无需修改现有代码(符合开闭原则)。
  3. 灵活性:通过更换具体工厂,可动态改变程序所使用的产品类型。

适用场景

  1. 当一个类不知道它所需要创建的对象的具体类型时。
  2. 当一个类希望由子类来决定创建哪个对象时。
  3. 当需要集中管理对象的创建逻辑,且未来可能扩展更多产品类型时。

与简单工厂模式的区别

  • 简单工厂:由一个工厂类根据参数创建不同产品,新增产品需修改工厂类(违反开闭原则)。
  • 工厂方法:每个产品对应一个具体工厂,新增产品只需新增工厂类(符合开闭原则)。

工厂方法模式更适合产品类型较多或需要频繁扩展的场景,是对简单工厂模式的进一步抽象和优化。

http://www.dtcms.com/a/611493.html

相关文章:

  • 织梦做的网站网速打开慢是怎么回事网站模板和定制的区别
  • 织梦网址导航网站模板wordpress电商
  • jQuery Accordion:高效且实用的网页交互组件
  • 找别人做网站注意什么做免费的视频网站可以赚钱吗
  • 做市场调查分析的网站网站域名怎么看
  • 一键部署MySQL全攻略
  • 搭建局域网MQTT通信
  • C++进阶 -- set、map、multiset、multimap的介绍及使用
  • 辽宁省朝阳市做网站首饰行业网站建设策划
  • 杭州网站开发工资企业网站seo营销
  • 特色的南昌网站制作做网站主题
  • 哈尔滨企业建站系统移动服务器建设的电影网站
  • 开发手机网站多少钱保定市网站建设
  • 设计配色的网站免费高清素材网站
  • 秦皇岛做网站公司有哪些网站黑链怎么做的
  • 网站问题seo解决方案网站如何做tag
  • 班级网站建设步骤平面设计专业的大专院校
  • 怎么在浏览器上面建网站垫江网站建设djrckj
  • 双语网站后台怎么做昌乐网站建设
  • SQL Server Service Broker清空conversation释放TempDB空间
  • 北京造价员变更在哪个网站做建设部投诉网站
  • tgz包批量下载脚本
  • 国外商品网站渭南做网站的公司
  • 质感网站系统下载 锐狐做网站后台需要学什么
  • ORBSLAM的LocalMapping模块和Tracking模块的接口讲解
  • 商城推广 网站建设开公司可以在哪些网站做推广
  • 网站建设的颜色值企业网站建设代理
  • 微服务监控体系:Prometheus + Grafana 集成
  • 网站自己做还是找公司网站做成响应式的有什么弊端
  • 城市建设的网站 政策法规临夏网站建设