电子商务和网站建设区别最新wordpress免费主题
news/
2025/9/28 7:21:47/
文章来源:
电子商务和网站建设区别,最新wordpress免费主题,门户网站模式,有个做特价的购物网站简介
原型模式#xff08;Prototype Pattern#xff09;是一种创建型设计模式#xff0c;它允许通过复制已有对象来生成新的对象#xff0c;而无需再次使用构造函数。
描述
原型模式通过复制现有对象来创建新的对象#xff0c;而无需显式地调用构造函数或暴露对象的创建…简介
原型模式Prototype Pattern是一种创建型设计模式它允许通过复制已有对象来生成新的对象而无需再次使用构造函数。
描述
原型模式通过复制现有对象来创建新的对象而无需显式地调用构造函数或暴露对象的创建细节。它使用原型接口来声明克隆方法所有实现该接口的具类都可以通过复制身来创建新的对象。
原理
原型模式的核心思想是通过克隆现有对象来生成新的对象。具体实现上可以通过两种方式来实现对象的克隆浅拷贝和深拷贝。
浅拷贝将对象的成员变量进行简单拷贝如拷贝对象的指针而不是指针指向的数据。这意味原始对象和克隆对象将共享相同的数据实例。深拷贝将对象的成员变量进行递归拷贝包括指针所指向的数据。这样原始对象和克隆对象将完全独立不共享数据实例。
类图 示例
假设我们有一个图形接口Shape其中包含一个克隆方法clone。然后我们实现了两个具体的图形类分别是矩形Rectangle和圆形Circle它们都实现了克隆方法。
C示例代码如下
#include iostream
using namespace std;// 图形接口
class Shape {
public:virtual Shape* clone() 0;virtual void draw() 0;
// 矩形类
class Rectangle : public Shape {
private:int width;int height;public:Rectangle(int width, int height) : width(width), height(height) {}Shape* clone() override {return new Rectangle(*this);}void draw() override {cout Drawing a rectangle with width and height height endl;}
};// 圆形类
class Circle : public Shape {
private:int radius;public:Circle(int radius) : radius(radius) {}Shape* clone() override {return new Circle(*this);}void draw() override {cout Drawing a circle with radius radius endl;}
};// 使用示例
int main() {Shape* originalRectangle new Rectangle(10, 5);Shape* clonedRectangle originalRectangle-clone();Shape* originalCircle new Circle(7);Shape* clonedCircle originalCircle-clone();originalRectangle-draw();clonedRectangle-draw();originalCircle-draw();clonedCircle-draw();delete originalRectangle;delete clonedRectangle;delete originalCircle;delete clonedCircle;return 0;
}输出
Drawing a rectangle with width 10 and height 5
Drawing a rectangle with width 10 and height 5
Drawing a circle with radius 7
Drawing a circle with radius 7解释
在上述示例中首先定义了图形接口Shape其中包含一个克隆方法clone和一个绘制方法draw。 然后创建了矩形类Rectangle和圆形类Circle它们都实现克隆方法和绘制方法。 在克隆方法中使用“深拷贝”方式来创建新对象确保原始对象和克隆对象的数据实例独。
在示例中创建了一个原始矩形对象和一个克隆矩形对象以及一个原始圆形和一个克隆圆形对象。然后分别调用它们的绘制方法来输出图形的相关信息。
结论
原型模通过复制现有对象来创建新的对象避免了显式调用构造函数或暴露对象的创建细节。这样可以减少对象的创建开销并在对象数量大时提高性能。
应用场景
原型模式适用于以下情况
当对象的创建过程比较复杂且需要繁创建对象时使用原型模式可以提高性能当需要隐藏对象的创建细节时使用原型模式可以避免暴露构造函数当需要动态地添加或删除对象时使用原型模式可以简化代码逻辑。
原型模式可以应用于各种场景如原始对象的初始化开销较大、动态加载对象、对象的保存和恢复等。它通过复制现有对象来创建新的对象提供了一种灵活的创建方式同时保留了对象的独立性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920315.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!