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

免费 网站 平台博罗营销网站制作

免费 网站 平台,博罗营销网站制作,地方门户网站系统有哪些,百度云wordpress怎么搭建网站原型模式#xff08;Prototype Pattern#xff09; 原型模式是一种创建型设计模式#xff0c;它允许你通过复制现有对象来创建新的对象#xff0c;而不是通过类实例化来创建对象。这种模式在开发时需要大量类似对象的情况下非常有用。原型模式的核心是一个具有克隆方法的接…原型模式Prototype Pattern 原型模式是一种创建型设计模式它允许你通过复制现有对象来创建新的对象而不是通过类实例化来创建对象。这种模式在开发时需要大量类似对象的情况下非常有用。原型模式的核心是一个具有克隆方法的接口通过实现该接口不同的对象可以被复制。 实际应用 在C中原型模式通常使用一个基类原型接口和具体实现类来实现。基类包含一个纯虚拟的克隆方法每个具体类实现该方法以返回自己的克隆。 克隆形状对象 假设我们有一个Shape基类和一些具体的形状类如Circle和Rectangle。 #include iostream #include memory #include unordered_map// Shape基类包含一个纯虚拟的克隆方法 class Shape { public:virtual ~Shape() default;virtual std::unique_ptrShape clone() const 0;virtual void draw() const 0; };// Circle类继承自Shape并实现克隆方法 class Circle : public Shape { private:int radius; public:Circle(int r) : radius(r) {}std::unique_ptrShape clone() const override {return std::make_uniqueCircle(*this);}void draw() const override {std::cout Drawing a Circle with radius radius \n;} };// Rectangle类继承自Shape并实现克隆方法 class Rectangle : public Shape { private:int width, height; public:Rectangle(int w, int h) : width(w), height(h) {}std::unique_ptrShape clone() const override {return std::make_uniqueRectangle(*this);}void draw() const override {std::cout Drawing a Rectangle with width width and height height \n;} };int main() {// 创建原型对象std::unordered_mapstd::string, std::unique_ptrShape prototypes;prototypes[circle] std::make_uniqueCircle(10);prototypes[rectangle] std::make_uniqueRectangle(20, 30);// 克隆对象std::unique_ptrShape shape1 prototypes[circle]-clone();std::unique_ptrShape shape2 prototypes[rectangle]-clone();// 绘制克隆的对象shape1-draw();shape2-draw();return 0; } 克隆计算机对象 假设我们有一个Computer基类和一些具体的计算机类如Laptop和Desktop。 #include iostream #include memory #include unordered_map// Computer基类包含一个纯虚拟的克隆方法 class Computer { public:virtual ~Computer() default;virtual std::unique_ptrComputer clone() const 0;virtual void display() const 0; };// Laptop类继承自Computer并实现克隆方法 class Laptop : public Computer { private:int batteryLife; public:Laptop(int battery) : batteryLife(battery) {}std::unique_ptrComputer clone() const override {return std::make_uniqueLaptop(*this);}void display() const override {std::cout Displaying a Laptop with battery life batteryLife hours\n;} };// Desktop类继承自Computer并实现克隆方法 class Desktop : public Computer { private:bool hasMonitor; public:Desktop(bool monitor) : hasMonitor(monitor) {}std::unique_ptrComputer clone() const override {return std::make_uniqueDesktop(*this);}void display() const override {std::cout Displaying a Desktop (hasMonitor ? with : without) monitor\n;} };int main() {// 创建原型对象std::unordered_mapstd::string, std::unique_ptrComputer prototypes;prototypes[laptop] std::make_uniqueLaptop(8);prototypes[desktop] std::make_uniqueDesktop(true);// 克隆对象std::unique_ptrComputer comp1 prototypes[laptop]-clone();std::unique_ptrComputer comp2 prototypes[desktop]-clone();// 显示克隆的对象comp1-display();comp2-display();return 0; } 克隆文档对象 假设我们有一个Document基类和一些具体的文档类如WordDocument和PDFDocument。 #include iostream #include memory #include unordered_map// Document基类包含一个纯虚拟的克隆方法 class Document { public:virtual ~Document() default;virtual std::unique_ptrDocument clone() const 0;virtual void print() const 0; };// WordDocument类继承自Document并实现克隆方法 class WordDocument : public Document { private:int wordCount; public:WordDocument(int words) : wordCount(words) {}std::unique_ptrDocument clone() const override {return std::make_uniqueWordDocument(*this);}void print() const override {std::cout Printing a Word Document with word count wordCount \n;} };// PDFDocument类继承自Document并实现克隆方法 class PDFDocument : public Document { private:int pageCount; public:PDFDocument(int pages) : pageCount(pages) {}std::unique_ptrDocument clone() const override {return std::make_uniquePDFDocument(*this);}void print() const override {std::cout Printing a PDF Document with page count pageCount \n;} };int main() {// 创建原型对象std::unordered_mapstd::string, std::unique_ptrDocument prototypes;prototypes[word] std::make_uniqueWordDocument(5000);prototypes[pdf] std::make_uniquePDFDocument(100);// 克隆对象std::unique_ptrDocument doc1 prototypes[word]-clone();std::unique_ptrDocument doc2 prototypes[pdf]-clone();// 打印克隆的对象doc1-print();doc2-print();return 0; } 总结 每个原型类实现自己的克隆方法从而确保了对象的正确复制。
http://www.hkea.cn/news/14278080/

相关文章:

  • 济南卓远网站建设西安网页设计师培训班
  • 手表网站建设策划书深圳网站搭建哪里找
  • 问政烟台网站厦门市建设局加装电梯公示网站
  • 网站制作需要多少钱做响应式网站是不是都用rem
  • 有服务器了怎么做网站长沙哪里有做网站的公司
  • 学校网站建设意义学校专业建设规划
  • 开拓网站建设公司什么是移动网站开发
  • 郑州市建设厅网站网络黄页网址
  • 佛山哪里有做网站的郑州建设网站的公司
  • 吴中企业建设网站报价长春网站建设培训班
  • 建网站费用记账杭州建德网站建设
  • 用jsp做的购物网站上海移动端网络推广哪家强
  • vs做网站需要的插件菏泽做网站的
  • 四川建设发展股份有限公司网站旅游网站做精准营销的
  • 网站制作的语言中国建设建筑教育网站
  • 网站做1920px好吗赣州网站建设优化服务
  • 网站域名怎样注销重庆景点
  • 南昌网站设计哪个最好网站模板可以自己做
  • 网站报错403东莞做公众号的网站
  • 手机网站 教程河南省招标投标信息网官网
  • 北京做网站哪里好轻量应用云服务器
  • 泉州晋江网站建设费用广州网站建设品牌
  • 广东智能网站建设质量保障如何做网站网站代理
  • 建设网站有什么法律么证件照制作免费版
  • dkp网站开发微网站首页模板
  • 膳食管理东莞网站建设汉中建筑信息平台
  • 青岛做网站公司电话app开发公司名字
  • 东莞网站建站服务公司阿里云服务器创建多个网站吗
  • 淘客网站建设要求网络营销怎么做?
  • 旅游电子商务网站建设百度站长提交网站地图