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

2017网站主流设计风格百度搜索一下百度

2017网站主流设计风格,百度搜索一下百度,seo搜索引擎优化总结报告,设计logo的手机软件免费文章目录 一.什么是原型设计模式?二.原型模式的特点三.原型模式的结构四.原型模式的优缺点五.原型模式的 C 实现六.原型模式的 Java 实现七. 代码解析八.总结 类图: 原型设计模式类图 一.什么是原型设计模式? 原型模式(Prototype…

文章目录

  • 一.什么是原型设计模式?
  • 二.原型模式的特点
  • 三.原型模式的结构
  • 四.原型模式的优缺点
  • 五.原型模式的 C++ 实现
  • 六.原型模式的 Java 实现
  • 七. 代码解析
  • 八.总结

类图: 原型设计模式类图

一.什么是原型设计模式?

原型模式(Prototype Pattern) 是一种创建型设计模式,它通过复制现有对象来生成新对象,而不是通过实例化类来创建。这种模式基于对象的克隆机制,适用于需要频繁创建对象的场景,可以提高性能并减少复杂的初始化过程。

二.原型模式的特点

  • 克隆对象:通过复制已有对象生成新对象,而非通过构造函数创建。
  • 性能优化:避免复杂对象创建的高开销。
  • 灵活性:可以动态添加或删除原型,而不影响其他对象。

三.原型模式的结构

  • Prototype(抽象原型类):定义了克隆方法,通常是 clone() 方法。
  • ConcretePrototype(具体原型类):实现抽象原型类的克隆方法。
  • Client(客户端):调用克隆方法创建新对象,而无需关心对象的具体类型。
    原型设计模式类图

四.原型模式的优缺点

  • 优点:
    • 性能优势:克隆比重新创建对象效率更高。
    • 动态性:无需编译时依赖类,可以在运行时动态生成对象。
    • 避免依赖性:通过克隆机制,可以避免直接依赖类的构造函数。
  • 缺点:
    • 复杂性增加:需要正确实现克隆方法,尤其是深拷贝场景。
    • 资源消耗:可能会为每个可克隆的对象维护克隆逻辑,导致类职责增多。

五.原型模式的 C++ 实现

#include <iostream>
#include <string>
#include <memory> // for smart pointers
using namespace std;// 抽象原型类
class Prototype {
public:virtual ~Prototype() = default;// 克隆方法(纯虚函数)virtual unique_ptr<Prototype> clone() const = 0;virtual void display() const = 0;
};// 具体原型类1
class ConcretePrototypeA : public Prototype {
private:string data; // 模拟一些状态
public:ConcretePrototypeA(string data) : data(data) {}// 克隆方法unique_ptr<Prototype> clone() const override {return make_unique<ConcretePrototypeA>(*this); // 调用拷贝构造函数}void display() const override {cout << "ConcretePrototypeA with data: " << data << endl;}
};// 具体原型类2
class ConcretePrototypeB : public Prototype {
private:int value; // 模拟一些状态
public:ConcretePrototypeB(int value) : value(value) {}// 克隆方法unique_ptr<Prototype> clone() const override {return make_unique<ConcretePrototypeB>(*this); // 调用拷贝构造函数}void display() const override {cout << "ConcretePrototypeB with value: " << value << endl;}
};// 客户端代码
void ClientCode(const Prototype& prototype) {auto clonedObject = prototype.clone(); // 克隆一个对象clonedObject->display();               // 显示克隆对象的内容
}int main() {// 创建原型对象ConcretePrototypeA prototypeA("PrototypeA Data");ConcretePrototypeB prototypeB(42);cout << "Cloning ConcretePrototypeA:" << endl;ClientCode(prototypeA);cout << "\nCloning ConcretePrototypeB:" << endl;ClientCode(prototypeB);return 0;
}

六.原型模式的 Java 实现

// 抽象原型类
abstract class Prototype implements Cloneable {public abstract Prototype clone();public abstract void display();
}// 具体原型类A
class ConcretePrototypeA extends Prototype {private String data;public ConcretePrototypeA(String data) {this.data = data;}@Overridepublic Prototype clone() {try {return (Prototype) super.clone();} catch (CloneNotSupportedException e) {throw new RuntimeException("Clone not supported!");}}@Overridepublic void display() {System.out.println("ConcretePrototypeA with data: " + data);}
}// 具体原型类B
class ConcretePrototypeB extends Prototype {private int value;public ConcretePrototypeB(int value) {this.value = value;}@Overridepublic Prototype clone() {try {return (Prototype) super.clone();} catch (CloneNotSupportedException e) {throw new RuntimeException("Clone not supported!");}}@Overridepublic void display() {System.out.println("ConcretePrototypeB with value: " + value);}
}// 客户端代码
public class PrototypePatternExample {public static void main(String[] args) {// 创建原型对象ConcretePrototypeA prototypeA = new ConcretePrototypeA("PrototypeA Data");ConcretePrototypeB prototypeB = new ConcretePrototypeB(42);System.out.println("Cloning ConcretePrototypeA:");Prototype clonedA = prototypeA.clone();clonedA.display();System.out.println("\nCloning ConcretePrototypeB:");Prototype clonedB = prototypeB.clone();clonedB.display();}
}

七. 代码解析

  • 抽象原型类(Prototype)
    • 定义了一个 clone() 方法,用于生成当前对象的副本。
    • 使用虚函数,使得派生类可以实现自己的克隆逻辑。
  • 具体原型类(ConcretePrototypeA 和 ConcretePrototypeB)
    • 实现了 clone() 方法,通过调用自身的拷贝构造函数完成对象的克隆。
    • ConcretePrototypeA 和 ConcretePrototypeB 模拟了不同的数据成员,演示了克隆不同类型对象的效果。
  • 客户端代码
    • 接收一个 Prototype 对象的引用,并通过调用 clone() 方法克隆出一个新对象。
    • 客户端无需关心具体的类,只需通过 Prototype 接口调用克隆方法即可。

八.总结

 原型模式通过克隆的方式创建新对象,而不依赖于类的构造函数。这种模式在需要频繁创建对象、或者需要动态生成对象的场景中非常有用。通过正确实现 clone() 方法,可以有效提高程序的灵活性和性能。然而,在实现复杂对象的深拷贝时,需要特别注意对象之间的依赖关系和资源管理,以避免潜在的错误。
应用场景:

  • 复杂对象的创建:初始化需要耗费大量资源的对象可以通过克隆来生成新对象。
  • 性能优化:避免使用构造函数或工厂方法重复创建对象。
  • 动态对象管理:需要动态生成对象而不依赖具体类。
http://www.hengruixuexiao.com/news/9430.html

相关文章:

  • 快速提升网站权重专业的营销团队哪里找
  • bing站长平台上海网站建设优化
  • 网站建设模板怎么做发帖子最好的几个网站
  • 英文网站建设 潍坊网络营销推广seo
  • 全功能asp政府网站源码 带网上办事在线指南等功能seo网站怎么优化
  • 太原商城网站建设平台推广费用一般是多少
  • 网站首页结构seo排名赚app是真的吗
  • 温州做网站 掌熊号免费男女打扑克的软件
  • 漳州北京网站建设公司谷歌应用商店下载
  • 连云港品牌网站建设让顾客心动的句子
  • 网站页面关键词都一样微信引流推广精准粉
  • 上海网站开发网站开发公司关键词推广价格
  • 工信部网站手机备案查询广告投放平台公司
  • 网站建设对企业的作用建个网站需要多少钱
  • 杭州企业seo网站优化免费网站安全软件大全游戏
  • 潍坊做网站的那家好公司网站建站要多少钱
  • ae免费模板网站互联网推广怎么做
  • java 网站开发 源码深圳排名seo公司
  • 偷的网站怎么做seo网络软文营销案例3篇
  • 如何查询网站是织梦做的关于seo如何优化
  • 做网站模板用什么软件宁波网站推广平台效果好
  • 个人网站备案做论坛海外新闻发布
  • 形容网站做的好的词语搜索排行
  • 施工企业安全形势分析会优化关键词技巧
  • 下载学校网站模板下载安装天津谷歌优化
  • 推荐西安优秀的响应式网站建设公司山东一级造价师
  • 黑龙江建设厅网站官网免费开通网站
  • 佳木斯网站设计贵阳网络推广排名
  • 昆山网站建设公司seo网络优化公司
  • 做竞价网站服务器多少钱发布项目信息的平台