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

用什么软件做动漫视频网站好百度平台商家我的订单查询

用什么软件做动漫视频网站好,百度平台商家我的订单查询,做原油看哪个网站,福州网站网页设计设计模式11-原型模式 写在前面对象创建模式典型模式原型模式动机结构代码推导应用特点要点总结 原型模式与工厂方法模式对比工厂方法模式原型模式什么时候用什么模式 写在前面 对象创建模式 通过对象创建模式绕开动态内存分配来避免创建过程中所导致的耦合过紧的问题。从而支…

设计模式11-原型模式

  • 写在前面
    • 对象创建模式
    • 典型模式
      • 原型模式
        • 动机
        • 结构
        • 代码推导
        • 应用
        • 特点
        • 要点总结
      • 原型模式与工厂方法模式对比
        • 工厂方法模式
        • 原型模式
        • 什么时候用什么模式

写在前面

对象创建模式

通过对象创建模式绕开动态内存分配来避免创建过程中所导致的耦合过紧的问题。从而支持对象创建的稳定,它是接口抽象之后的第一步工作。

典型模式

  • 工厂方法模式
  • 抽象工厂模式
  • 原型模式
  • 构建器

原型模式

动机

在某些情况下,创建一个新对象的过程可能非常复杂或代价高昂。通过复制一个现有的对象(即原型),我们可以快速创建新的对象,并且可以对复制的对象进行独立修改。这种方式特别适用于需要频繁创建相似对象的场景。

结构

在这里插入图片描述

  1. Prototype(原型): 声明一个克隆自身的接口。
  2. ConcretePrototype(具体原型): 实现克隆方法,以便创建自己的副本。
  3. Client(客户端): 通过调用原型的克隆方法来创建新的对象。
代码推导

就是将工厂模式中的创建对象的接口,移到同一个类中,并进行深拷贝的方式创建对象

下面是一个简单的原型模式示例:

#include <iostream>
#include <string>
using namespace std;// Prototype Interface
class Prototype {
public:virtual Prototype* clone() const = 0;virtual void print() const = 0;virtual ~Prototype() {}
};// Concrete Prototype
class ConcretePrototype : public Prototype {
private:string field;public:ConcretePrototype(const string& field) : field(field) {}ConcretePrototype(const ConcretePrototype& other) : field(other.field) {}Prototype* clone() const override {return new ConcretePrototype(*this);}void print() const override {cout << "ConcretePrototype with field: " << field << endl;}
};// Client Code
int main() {ConcretePrototype prototype1("Value1");Prototype* prototype2 = prototype1.clone();prototype1.print();prototype2->print();delete prototype2;return 0;
}

在这个例子中,ConcretePrototype实现了Prototype接口并提供了一个clone方法来复制自身。客户端代码通过调用clone方法创建了一个ConcretePrototype对象的副本。

应用

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

  • 当一个系统需要独立于其产品创建、构成和表示时。
  • 当要实例化的类是由某个运行时动态加载的类时。
  • 为了避免使用new操作符直接创建对象。
  • 当一个类的实例化过程非常复杂或代价高昂时(如需要大量初始化资源)。
特点
  • 优点:
    • 可以在不暴露具体实现细节的情况下快速创建对象。
    • 减少创建对象的成本(尤其是创建对象过程复杂或代价高昂时)。
    • 允许动态增加或减少产品种类。
  • 缺点:
    • 需要为每一个类配备一个克隆方法,这可能会增加代码复杂性。
    • 深拷贝和浅拷贝的实现需要仔细考虑,尤其是在涉及到复杂对象时。
要点总结
  • 原型模式同样用于隔离类对象的使用者和具体类型之间的耦合关系,同样要求这些异变类拥有稳定的接口。
  • 原型模式对于如何创建异变类的实体对象,采用原型克隆的方法来做。它使得我们可以非常灵活的动态创建。拥有某些稳定接口的新对象。所需工作仅仅是注册一个新类的对象即原型,然后在任何需要的地方克隆。
  • 原型模式中的克隆方法可以利用某些框架中的序列化,来实现深拷贝。

原型模式与工厂方法模式对比

工厂方法模式
  • 动机: 通过定义一个创建对象的接口,由子类决定实例化的类是哪一个。这样,工厂方法把实例化的过程推迟到子类。
  • 优点: 避免了在客户端代码中显式使用new操作符,符合开闭原则。
  • 应用场景: 适用于实例化的类可能经常变化的情况,通过工厂方法可以灵活地改变产品的实例化方式。
原型模式
  • 动机: 通过复制现有对象来创建新对象,而不是通过类构造函数实例化对象。适用于需要频繁创建相似对象的场景。
  • 优点: 可以快速创建对象,减少创建对象的成本。
  • 应用场景: 适用于创建对象过程复杂或代价高昂,需要频繁创建相似对象的情况。
什么时候用什么模式
  • 使用工厂方法模式: 当你需要将实例化过程推迟到子类并希望子类决定要创建的类是哪一个时。工厂方法模式通过继承和多态来实现对象的创建。
  • 使用原型模式: 当你需要快速创建对象并且这些对象具有相似的属性时。原型模式通过克隆现有对象来实现对象的创建。

总的来说,如果对象创建过程复杂且创建开销大,或者对象是从一个繁重的构造函数生成的,那么使用原型模式更为合适。如果需要灵活地选择实例化的类并希望代码符合开闭原则,那么工厂方法模式是更好的选择。

http://www.hkea.cn/news/852888/

相关文章:

  • 订阅号可以做网站吗南宁seo外包服务商
  • 邢台哪儿做网站便宜宁波 seo排名公司
  • 深圳网站优化咨询网上广告怎么推广
  • 网站右击无效是怎么做的网络营销产品
  • 中宣部网站政治建设网站服务器是什么意思
  • 淮安网站定制徐州seo外包公司
  • 嘉兴类网站系统总部网站建设技术解决方案
  • 做网站的教科书外包网络推广公司推广网站
  • 模板名字 wordpress优化大师如何删掉多余的学生
  • 3d网站建设制作百度关键词优化手段
  • 新手做那些网站比较好东莞企业网站排名
  • 欧美风格网站360指数
  • 优秀网站建设公司电话下列哪些店铺适合交换友情链接
  • 58同城乌鲁木齐网站建设重庆网站到首页排名
  • wordpress知言主题山东服务好的seo公司
  • 旅游商务平台网站建设功能需求关键词排名查询官网
  • 做网站要搭建本地服务器么微商引流被加方法精准客源
  • 网站名字要备案吗友情链接怎么弄
  • 江苏网站开发外链网站大全
  • 网站代备案流程图百度关键词优化排名技巧
  • 石狮建设局网站今日头条站长平台
  • 修改公司网站网页站长素材音效
  • 网站速度测速免费访问国外网站的app
  • 常州网站搭建公司宣传推广渠道有哪些
  • 中国建设监理网站广告网络
  • 网站维护费用怎么收路由优化大师官网
  • 如何加入小说网站做打字员合肥网站优化推广方案
  • 网站建设现状关键词在线优化
  • 网站建设就业百度网址导航主页
  • 郑州公司做网站汉狮中囯联通腾迅