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

国际新闻大事件seo关键词排名优化价格

国际新闻大事件,seo关键词排名优化价格,建网站 京公网安,专业做网站广州原型模式(Prototype Pattern)和建造者模式(Builder Pattern)虽然都是创建型设计模式,但它们的应用场景和实现方式有着显著的区别。以下是二者的详细对比: 1. 意图和应用场景 原型模式: 意图&a…

        原型模式(Prototype Pattern)和建造者模式(Builder Pattern)虽然都是创建型设计模式,但它们的应用场景和实现方式有着显著的区别。以下是二者的详细对比:

1. 意图和应用场景

  • 原型模式:
    • 意图:通过克隆一个现有的对象来创建新对象,而不是通过实例化类来创建新对象。
    • 应用场景:
      • 当创建对象的过程非常复杂或昂贵时,可以通过复制(克隆)现有的实例来创建新对象。
      • 如果系统中有许多具有相似状态的对象,原型模式可以通过复制现有对象节省初始化时间。
      • 适合动态加载类或对象时,用于避免依赖具体的构造函数或复杂的初始化流程。
  • 建造者模式:
    • 意图:将复杂对象的构建过程分离出来,使得相同的构建过程可以创建不同的对象。
    • 应用场景:
      • 当对象的创建过程复杂且涉及多个步骤时,通过建造者模式可以控制创建过程。
      • 特别适合构建复杂的对象(通常包含多个子对象或多个可选参数)。
      • 适用于需要通过不同配置来创建不同种类对象的场景(例如创建同一个产品的不同版本)。

2. 创建对象的方式

  • 原型模式:
    • 通过复制(克隆)对象来创建新对象。复制操作可以是浅拷贝或深拷贝。
    • 主要关注对象的复制过程,而不是构建过程。
    • 通常需要实现 clone() 方法或类似的克隆机制来复制对象。
  • 建造者模式:
    • 通过构造步骤逐步构建对象。这个过程将对象的创建过程与表示过程解耦,允许一步一步地配置对象。
    • 主要关注构建过程中的不同步骤和顺序,并且允许通过同一个构造过程生成不同的对象。
    • 通常使用一个 Builder 类来定义构建的步骤和最终产品的生成。

3. 结构上的区别

  • 原型模式:
    • 原型模式的核心是对象本身,它使用现有的对象作为原型,通过克隆的方式生成新对象。
    • 类结构较为简单,通常只涉及一个需要克隆的对象类。
  • 建造者模式:
    • 建造者模式有清晰的角色划分,通常包括:
      • Builder:定义了构建产品的抽象步骤。
      • ConcreteBuilder:实现具体的构建步骤。
      • Director(可选):负责控制对象构建的顺序。
      • Product:最终生成的对象。
    • 结构较复杂,因为构建过程需要清晰的步骤和相应的实现。

4. 修改对象状态的方式

  • 原型模式:
    • 对象状态是通过克隆现有对象,然后可能在新对象上进行少量修改来实现的。
    • 这种模式下,通常不涉及构建复杂对象的多个步骤,而是从已有的对象开始,进行轻微的调整。
  • 建造者模式:
    • 对象状态的创建是通过一系列构建步骤来完成的。这些步骤可以独立控制,允许在构造过程中自由地改变对象的状态。
    • 对象的不同部分可以通过不同的步骤来进行定制,构建过程可以灵活调整。

5. 代码示例

原型模式示例(C++):

#include <iostream>
#include <string>
#include <memory>class Prototype {
public:virtual ~Prototype() {}virtual std::shared_ptr<Prototype> clone() const = 0;virtual void print() const = 0;
};class ConcretePrototype : public Prototype {
private:std::string name;public:ConcretePrototype(const std::string& name) : name(name) {}std::shared_ptr<Prototype> clone() const override {return std::make_shared<ConcretePrototype>(*this);  // 浅拷贝}void print() const override {std::cout << "Prototype: " << name << std::endl;}
};int main() {std::shared_ptr<Prototype> prototype = std::make_shared<ConcretePrototype>("Original");std::shared_ptr<Prototype> clone = prototype->clone();  // 克隆对象prototype->print();clone->print();  // 输出与原型类似的对象return 0;
}

建造者模式示例(C++):

#include <iostream>
#include <string>// 产品类
class Product {
private:std::string partA;std::string partB;public:void setPartA(const std::string& part) { partA = part; }void setPartB(const std::string& part) { partB = part; }void show() const {std::cout << "Product with " << partA << " and " << partB << std::endl;}
};// Builder 接口
class Builder {
public:virtual ~Builder() {}virtual void buildPartA() = 0;virtual void buildPartB() = 0;virtual Product getResult() = 0;
};// 具体的 Builder 实现
class ConcreteBuilder : public Builder {
private:Product product;public:void buildPartA() override {product.setPartA("Part A");}void buildPartB() override {product.setPartB("Part B");}Product getResult() override {return product;}
};// Director 类,负责构建过程的控制
class Director {
private:Builder& builder;public:Director(Builder& builder) : builder(builder) {}void construct() {builder.buildPartA();builder.buildPartB();}
};int main() {ConcreteBuilder builder;Director director(builder);director.construct();Product product = builder.getResult();product.show();  // 输出构建后的产品return 0;
}

6. 总结对比

模式

原型模式

建造者模式

意图

通过复制现有对象来创建新对象。

通过分步骤构建复杂对象。

创建方式

克隆(浅拷贝或深拷贝)现有对象。

按步骤逐步构建对象。

结构

结构较简单,通常只有一个类实现克隆。

结构较复杂,通常涉及多个类和多个步骤。

状态修改

通过克隆对象后修改少量状态。

通过多个步骤灵活调整对象的各个部分。

应用场景

当对象创建昂贵且需要复制现有对象时。

当对象构建过程复杂,需要逐步构建或有多种构建方式时。

解释:

  • 原型模式:
    • Prototype 是一个抽象类,定义了 clone() 方法。
    • ConcretePrototype 是具体的实现类,负责实现 clone() 方法并执行对象的复制操作。

  • 建造者模式:
    • Builder 是一个接口,定义了构建产品的方法。
    • ConcreteBuilder 实现了 Builder 接口,具体构建 Product 的各个部分。
    • Director 负责控制构建过程,使用 Builder 来构建最终产品。
    • Product 是最终生成的产品类,包含构建的各个部分。

        两者的主要区别在于创建对象的方式和灵活性,原型模式专注于现有对象的复制,而建造者模式专注于通过步骤构建复杂对象。

http://www.yidumall.com/news/68462.html

相关文章:

  • 制作app怎么制作四川seo优化
  • 网站改版需要注意齐三seo顾问
  • 慈善组织网站建设方案百度学术论文查重官网入口
  • 网站建设优化价格搜索引擎优化seo怎么做
  • 模板网站有后台么google官网注册
  • 安远县城乡规划建设局网站2024会爆发什么病毒
  • 做那个免费观看视频网站百度识图识别
  • 横岗网站制作中国最新领导班子
  • 免费视频素材网站哪个最好罗湖区seo排名
  • wordpress局域网404百度seo招聘
  • 网站建设面临的困难广州白云区新闻头条最新消息今天
  • wordpress 七牛上传插件长沙弧度seo
  • 网站设计的目的seo快排软件
  • 湖北 网站建设网站优化公司推荐
  • 织梦小说网站seo顾问能赚钱吗
  • 晋城有做网站的吗百度投诉中心电话24个小时
  • 四川建设网站静态网站开发
  • 网站建设中的矢量图标搜索引擎营销的英文缩写是
  • 做动态网站有什么较好的主题网络销售怎么做
  • 关于做公司网站建设你应该知道的个人网站免费域名和服务器
  • 家具网站建设目的及功能定位做公司网页
  • 对网站建设功能的情况说明站长seo综合查询
  • 台州网站建设选浙江华企免费论坛建站系统
  • 网站如何做访客统计广东深圳疫情最新情况
  • 网站内容要突出什么原因百度在西安的公司叫什么
  • 哪些网站做批发衣服宁波seo推荐推广平台
  • 企业网站建设流程介绍如何建立自己的网页
  • wordpress获取QQseo综合查询工具可以查看哪些数据
  • 网站一键搭建百度推广官方网站
  • 手机网站模板使用方法小红书推广平台