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

医疗营销网站建设方案营销型网站建设模板

医疗营销网站建设方案,营销型网站建设模板,抖音做我女朋友好不好网站,彩票网站开发的动机 在软件系统中,经常面临着某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 之前的工厂方法和抽象工厂将抽象基类和具体的实现分开。原型模式也差不多&#…

动机

在软件系统中,经常面临着某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。

之前的工厂方法和抽象工厂将抽象基类和具体的实现分开。原型模式也差不多,但是原型模式将抽象基类合并。

原型模式的应用场景

原型模式特别适用于以下场景:

  • 对象的创建过程比较复杂或耗时。
  • 需要动态创建对象,且对象的类型在运行时才能确定。
  • 需要避免重复初始化对象的开销。
#include <iostream>
#include <memory>
#include <string>// 抽象类
class ISplitter {
public:virtual void split() = 0;virtual std::unique_ptr<ISplitter> clone() const = 0; // 返回一个智能指针virtual ~ISplitter() {}
};// 二进制拆分器
class BinarySplitter : public ISplitter {
private:std::string data; // 假设这是需要拆分的二进制数据
public:BinarySplitter(const std::string& data) : data(data) {}void split() override {std::cout << "Splitting binary data: " << data << std::endl;// 具体的二进制拆分逻辑}std::unique_ptr<ISplitter> clone() const override {return std::make_unique<BinarySplitter>(*this); // 深拷贝}
};// 文本拆分器
class TxtSplitter : public ISplitter {
private:std::string data; // 假设这是需要拆分的文本数据
public:TxtSplitter(const std::string& data) : data(data) {}void split() override {std::cout << "Splitting text data: " << data << std::endl;// 具体的文本拆分逻辑}std::unique_ptr<ISplitter> clone() const override {return std::make_unique<TxtSplitter>(*this); // 深拷贝}
};// 使用示例
int main() {// 创建原始对象BinarySplitter binarySplitter("01010101");TxtSplitter txtSplitter("Hello, World!");// 克隆对象std::unique_ptr<ISplitter> binaryClone = binarySplitter.clone();std::unique_ptr<ISplitter> txtClone = txtSplitter.clone();// 使用克隆对象binaryClone->split();txtClone->split();return 0;
}

模式定义

使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。

什么时候使用原型,什么时候使用工厂最大的区分点就在于:用工厂方法创建对象是不是非常简单的几个步骤就可以把这个对象创建出来,还是说需要考虑对象很复杂的中间状态,然后又很希望保留这个中间状态,如果是后者的话就用原型。

要点总结

Prototype模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有稳定的接口。

Prototype模式对于“如何创建易变类”的实体对象“采用”原型克隆的方法来做,它使得我们可以非常灵活地动态创建“拥有某些稳定接口”的新对象–所需工作仅仅是注册一个新类的对象(即原型),然后在任何需要的地方Clone。

Prototype模式中的Clone方法可以利用某些框架中的序列化来实现深拷贝。

http://www.fp688.cn/news/146713.html

相关文章:

  • 开发网站需要什么条件百度大搜数据多少钱一条
  • 可以做网站的网络小程序生成平台系统
  • 源码分享网站新闻源发稿平台
  • 网站接广告能赚多少钱太原seo霸屏
  • 邢台本地网站站长工具之家seo查询
  • 音乐网站的制作百度推广软件
  • 建设网站怎么做网站网络营销推广
  • 做女朋友网站seo黑帽培训
  • 深圳 做公司网站个人在线网站推广
  • mac网站开发软件有哪些新媒体运营工作是什么
  • 网站外链接自己可以怎么做的百度seo快速提升排名
  • 深圳网站关键词优化重庆网站排名
  • 做网站前期了解客户什么需求网络优化工资一般多少
  • 在线照片处理工具福州seo顾问
  • 广告图片网站源码网络营销运营推广
  • jsp获取网站域名百度搜索榜单
  • 科技网站的一些案例展示seo的方法有哪些
  • 怎么用visual studio做网站百度上免费创建网站
  • 爱你视频免费观看搜索引擎环境优化
  • 温州企业网站建设重庆seo研究中心
  • 网站中的图片展示功能该设计什么网络营销有哪些形式
  • 全国建设工程招标信息网站南京网站设计公司
  • 无锡网站营销公司简介谷歌paypal官网下载
  • dw简易网站怎么做个人可以做推广的平台有哪些
  • app软件下载网站源码国家新闻最新消息今天
  • 要怎样建立自己的网站网络推广网址
  • 有做彩票网站平台的吗百度网址名称是什么
  • 华为网站的建设建议网页设计论文
  • 中国建设领域专业人员网站宁宁网seo
  • .com网站怎么做nba赛程排名