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

想弄个网站千锋教育培训机构怎么样

想弄个网站,千锋教育培训机构怎么样,重庆市建设工程造价管理协会,jquery网站底部导航效果5、原型模式 通过复制现有对象来创建新对象,避免从零开始构建,就像 “复印文件” 一样。 克隆的核心是复用现有对象状态 用 克隆熊猫 举例,秒懂原理 假设你有一只熊猫对象(属性:名字、年龄、毛色)&#…

5、原型模式

通过复制现有对象来创建新对象,避免从零开始构建,就像 “复印文件” 一样。

克隆的核心是复用现有对象状态

请添加图片描述

用 克隆熊猫 举例,秒懂原理

假设你有一只熊猫对象(属性:名字、年龄、毛色),想快速创建 10 只一模一样的熊猫:

不用原型模式: 每次 new 一个熊猫,手动设置所有属性(名字 =“盼盼”,年龄 = 3 岁,毛色 = 黑白…),重复劳动。
用原型模式: 直接复制(克隆)已有的熊猫对象,新对象会继承所有属性,只需修改少数不同的地方(比如名字改成 “圆圆”)。

原型模式的核心角色(3 步走)

  1. 原型(Prototype): 定义克隆自己的接口(如clone()方法)。
  2. 具体原型(Concrete Prototype): 实现克隆逻辑,比如熊猫类。
  3. 客户端(Client): 通过复制原型创建新对象。

为什么要用原型模式?

场景对比:
创建复杂对象时: 比如一个游戏角色有 100 个属性,从零创建容易出错,复制现有角色更高效。
需要多次创建相似对象时: 比如电商网站生成 100 个 “默认地址” 模板,复制比新建更快。

核心优势

  1. 减少重复初始化: 直接复制现有对象状态,比 new 对象后再设值更高效。
  2. 方便扩展对象类型: 新增角色时,只需复制现有原型并修改部分属性,无需修改创建逻辑。
  3. 隔离对象创建细节: 客户端不用知道对象如何构建,只需复制原型。

代码示例

// 1. 原型接口:实现Cloneable接口并覆盖clone方法  
class Panda implements Cloneable {private String name;private int age;private String color = "黑白"; // 共享属性,所有熊猫默认毛色相同public Panda(String name, int age) {this.name = name;this.age = age;}// 克隆方法(浅拷贝)@Overrideprotected Panda clone() throws CloneNotSupportedException {return (Panda) super.clone();}//  setter/getterpublic void setName(String name) { this.name = name; }public String getName() { return name; }public void setAge(int age) { this.age = age; }public int getAge() { return age; }public String getColor() { return color; }
}// 2. 客户端:复制原型创建新对象  
public class PrototypeDemo {public static void main(String[] args) throws CloneNotSupportedException {// 初始原型:熊猫“盼盼”Panda original = new Panda("盼盼", 3);// 克隆出熊猫“圆圆”Panda clone1 = original.clone();clone1.setName("圆圆");clone1.setAge(2);// 克隆出熊猫“团团”Panda clone2 = original.clone();clone2.setName("团团");clone2.setAge(4);// 输出结果System.out.println("原型:" + original.getName() + ",年龄:" + original.getAge() + ",毛色:" + original.getColor());System.out.println("克隆1:" + clone1.getName() + ",年龄:" + clone1.getAge() + ",毛色:" + clone1.getColor());System.out.println("克隆2:" + clone2.getName() + ",年龄:" + clone2.getAge() + ",毛色:" + clone2.getColor());}
}

深拷贝 vs 浅拷贝

  • 浅拷贝: 只复制对象本身,不复制其引用的对象(如上面的clone()方法)。
    → 若原型中有数组或集合,克隆对象会和原型共享该数据,修改会互相影响。
  • 深拷贝: 递归复制所有引用的对象(需手动实现)。
    → 如序列化对象后再反序列化,确保克隆对象完全独立。
  1. 原型模式和工厂模式的区别
    • 工厂模式:根据参数 “新建” 对象(从无到有)。
    • 原型模式:根据现有对象 “复制” 新对象(从有到有)。
  2. 实际场景举例
    • 游戏中复制 NPC:怪物、NPC 的属性通过复制原型快速生成。
    • Spring 框架中的Bean复制:通过BeanUtils.cloneBean()复制对象。
http://www.dtcms.com/wzjs/518794.html

相关文章:

  • 做网站的猫腻百度云引擎搜索
  • wbs分析网站建设公司网站
  • 淘宝客做二级域名网站深圳百度国际大厦
  • 五八同城网站开发了多久免费b2b网站推广有哪些
  • 深圳市手机网站建设怎么样长春seo按天计费
  • 自己做的网站怎么实现结算功能seo推广怎么收费
  • 黄岛开发区做网站的公司安卓优化大师app下载
  • 做网站用的字体上海seo有哪些公司
  • 用axure做网站百度手机助手app下载
  • 电子商务网站开发公司项目推广渠道有哪些
  • 网站内图片变换怎么做seo引擎优化是什么
  • 电子商务论文网站建设seo搜索引擎优化是通过优化答案
  • 网站icp备案 技术负责人西安seo引擎搜索优化
  • 程序员不是做网站的活动策划方案
  • 网站图片延时加载武汉网络推广外包公司
  • 张掖做网站风云榜百度
  • 网站建设系统多少钱成品网站1688入口网页版
  • wordpress怎么安装模板百度推广怎么优化排名
  • 公司怎样制作网站seo的优化方案
  • 企业网站建站企业中国软文网官网
  • 网站结构是体现的简述提升关键词排名的方法
  • 城阳网站制作沪深300指数怎么买
  • 软件商店下载安装app网站优化最为重要的内容是
  • 苏州网站制作开发南宁seo
  • 浙江建筑信息网站quark搜索引擎入口
  • 做外贸生意是不是需要建网站近几天发生的新闻大事
  • 如何做资讯网站谷歌搜索广告优化
  • 卖域名的网站要怎么做自媒体是如何赚钱的
  • 平面设计和ui设计哪个简单关键词优化推广公司排名
  • 做动效很好的网站最近的新闻摘抄