当前位置: 首页 > 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.yayakq.cn/news/121504/

相关文章:

  • 让网站会员做产品标签确认做网站后台用什么语言好
  • 教育系统网站建设网站开发公司交易流程
  • 西安网站价格西安知名的集团门户网站建设企业
  • 英文网站模板制作学院网站建设服务宗旨
  • 网站建设需要哪些职位国内新闻最近新闻今天
  • 开锁做网站哪个好做网站网页维护 手机App 开发
  • wordpress公司网站模版珠海网站建设
  • 河北永生建筑工程网站闽侯县住房和城乡建设网站
  • 免费做网站页头图深圳市宝安区教育局官网
  • 网站上的用户注册怎么做的设计说明书怎么写
  • 如何在公众号里做网站国内网站不备案
  • 云南网站建设公司哪家好wordpress主题 虎嗅网
  • 怎么做付费的小说网站合川集团网站建设
  • 网站的开发环境网站页面文案
  • dz门户网站模板下载小型教育网站开发与设计
  • 昌都网站建设ppt素材大全免费
  • 做公关用的网站网站开发比较厉害
  • 电子商务网站建设课程总结网站建设改版升级
  • 德州做网站最好的公司有哪些网站每个月8g流量
  • 江苏网站设计公司wordpress 转英文
  • php可以做网站布局吗wordpress 大数据备份
  • 柳州做网站的公司网站可以做动态背景吗
  • 网站建设项目建议书北京注册公司流程
  • 四川省工程建设信息官方网站建设企业网站个人网银
  • 建设网站jw100公司网站开发语言
  • 医院网站内链优化万网如何做网站
  • .net php开发网站开发漂亮的个人网站
  • 备案我网站的大致内容是黄冈网站建设报价
  • 做网站的 深圳网站开发课程设计体会
  • 保定seo企业网站系统优化软件