环球热资讯!如何以孙悟空七十二变去理解原型模式?
(相关资料图)
前言本文主要讲述原型模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。
一.什么是原型模式原型模式是23种设计模式中创建型模式的一种,它关注的是用一个已经存在的实例对象作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。
二.生活中的原型模式1.孙悟空孙悟空有独一无二的法宝如意金箍棒和众多法术,其中有一个名为身外身法的道术,孙悟空拔身上的毛幻化出另一个自己,这个大家应该有印象吧,这个幻化出新的分身就跟设计模式中的原型模式很相似。
2.哪吒哪吒不管是西游记还是封神榜中都出现过,也是江帅所喜欢的中国神话人物之一,哪吒虽然没有孙悟空会身外身法,但是他会三头六臂,通过这个法术,哪吒会变换出2个新的头颅和2对新的手臂,而这个三头六臂是以头或者手臂为参照物变化出来的,就跟设计模式中的原型模式很相似。
3.漩涡鸣人旋涡鸣人是日本漫画中火影忍者的人物,影分身之术是他最厉害的忍术之一。这个忍术是能够变幻出多个相同的自己,以自己为参照物根据查克拉的量来变幻出不同的数量,这就跟设计模式中的原型模式很相似。
三.原型模式的实现接下来江帅以孙悟空的身外身法之术来举例,通过原型模式来实现。先创建一个武器类,再创建一个孙悟空的类并实现克隆接口
package com.qianfeng.ran;/** @author:江帅* 孙悟空类*/public class SunWuKong implements Cloneable{ //名字 private String name; //武器 private Weapon weapon; public SunWuKong() { } public SunWuKong(String name, Weapon weapon) { this.name = name; this.weapon = weapon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Weapon getWeapon() { return weapon; } public void setWeapon(Weapon weapon) { this.weapon = weapon; } @Override public String toString() { return "SunWuKong{" + "name="" + name + """ + ", weapon=" + weapon + "}"; } //身外身之术 @Override protected Object clone() throws CloneNotSupportedException { //通过 Object 类的 clone() 克隆出新的孙悟空 SunWuKong sunWuKong = (SunWuKong)super.clone(); //新的分身名等同当前名 sunWuKong.setName(name); //新的分身手持同样的武器,但为新的对象 sunWuKong.setWeapon(new Weapon(weapon.getName(),weapon.getSource())); return sunWuKong; }}/* * @author:江帅 * 武器类 */public class Weapon { //武器名 private String name; //来源 private String source; public Weapon() { } public Weapon(String name, String source) { this.name = name; this.source = source; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } @Override public String toString() { return "Weapon{" + "name="" + name + """ + ", source="" + source + """ + "}"; }}
最后通过原型模式来创建孙悟空的分身。
package com.qianfeng.ran;/* * @author:江帅 * 客户端 */public class Demo { public static void main(String[] args) throws CloneNotSupportedException { //phantom //创建孙悟空对象,拥有东海龙宫的如意金箍棒 SunWuKong sunWuKong = new SunWuKong("孙悟空",new Weapon("如意金箍棒","东海龙宫")); //调用克隆方法创建2个分身 -- 身外身之术 SunWuKong phantom1 = (SunWuKong)sunWuKong.clone(); SunWuKong phantom2 = (SunWuKong)sunWuKong.clone(); //执行结果: //SunWuKong{name="孙悟空", weapon=Weapon{name="如意金箍棒", source="东海龙宫"}} System.out.println(sunWuKong.toString()); //执行结果: //SunWuKong{name="孙悟空", weapon=Weapon{name="如意金箍棒", source="东海龙宫"}} System.out.println(phantom1.toString()); //执行结果: //SunWuKong{name="孙悟空", weapon=Weapon{name="如意金箍棒", source="东海龙宫"}} System.out.println(phantom2.toString()); //改变分身的武器和出产地 phantom1.getWeapon().setName("芭蕉扇"); phantom1.getWeapon().setSource("火焰山"); phantom2.getWeapon().setName("紫金红葫芦"); phantom2.getWeapon().setSource("太上老君"); //执行结果: //SunWuKong{name="孙悟空", weapon=Weapon{name="如意金箍棒", source="东海龙宫"}} //执行结果: System.out.println(sunWuKong.toString()); //执行结果: //SunWuKong{name="孙悟空", weapon=Weapon{name="芭蕉扇", source="火焰山"}} System.out.println(phantom1.toString()); //执行结果: //SunWuKong{name="孙悟空", weapon=Weapon{name="紫金红葫芦", source="太上老君"}} System.out.println(phantom2.toString()); }}
四.总结在Java中克隆新的对象会产生相同的引用,改变克隆对象的内容会改变到原型对象,这个属于浅拷贝,就像咱们的案例,如果用的是浅拷贝,打印结果会是3个武器都是来自太上老君的紫金红葫芦。
而使用原型模式克隆出来的对象则跟原型对象不是同一个地址,改变克隆对象不会影响原型对象,这个属于深拷贝,如案例所示每个对象里的内容不会因为别的对象的改变而改变。
下一章,将带大家学习市场供需关系(设计模式之生产者和消费者模式)。
标签:
推荐文章
- 环球热资讯!如何以孙悟空七十二变去理解原型模式?
- 【收评】菜粕日内下跌1.29% 近5日累计涨幅1.71%
- 专访:RCEP全面生效促进区域经济一体化——访日本贸易振兴机构成都代表处首席代表森永正裕_全球热门
- 每日热闻!插混SUV领域第二条“鲶鱼” 试驾吉利银河L7
- 天天微资讯!孚能科技(688567.SH)股东深圳安晏减持期满未减持
- 头条焦点:县委书记李炯芳在考试指挥中心开展高考巡考工作
- 华为联合IEEE Kazakhstan Subsection共同发布HPC无损以太和AI Fabric网络技术白皮书
- 环球聚焦:华工科技涨停
- 焦点短讯!天源环保:公司生产制造的纳滤、反渗透集成装备可用于盐湖提锂过程中的工艺单元 公司尚未涉及该类业务
- 沧州十中招生电话(沧州十中有空调吗) 环球热资讯
- 环球观点:娄底职院与涟源市枫坪镇校地结对共建社区学院
- 崩坏星穹铁道叠影器特制怎么用[多图]|世界热闻
- 白云山(600332)6月7日主力资金净买入1226.24万元
- 全球新动态:2023世界人工智能大会将在沪举办 OpenAI、英伟达等与会
- 今日最新!沪指全天弱势整理,创业板指依旧疲弱,反弹或一触即发!
- 天天快资讯丨高端性价比——三只松鼠触底反弹的新起点?
- 江苏出台14条措施推动外贸稳规模优结构|全球播资讯
- 南开区市场监管局强化高考、中考期间食品安全监管保障工作
- 洽洽食品:控股股东拟3000万至5000万元增持股份
- 建工修复拟定增募不超2.25亿元 2021年上市募3.04亿元 环球新视野
- 每一个微小的梦想,都值得全力以赴-最新
- 理想汽车北京顺义工厂最早7月投产?官方回应:确实在积极准备中 焦点精选
- 环球速读:杰洛特配音患上前列腺癌 《巫师》官方发文祝福
- 环球要闻:专硕院校排名怎么查成绩 考研院校为什么不公布考研学生的排名?这样对学生来...
- 卡霍夫卡水电站大坝遭破坏,会有哪些影响?-环球精选
- 为梦护航 北碚区百余辆“雷锋的士”爱心送考 要闻
- 洛江区政府主要领导带队开展巡林
- 外籍海员突发疾病危及生命,外高桥边检站凌晨时分畅通“绿色通道”紧急救助 世界快播
- 力鼎光电06月07日主力资金大幅流出-焦点快看
- 环球新消息丨(经济)江苏出台14条措施推动外贸稳规模优结构
- 世界播报:3辆全新特斯拉超跑竟被遗弃中国码头13年!原车主身份不简单
- 陕西省政府办公厅最新通知
- 年内超500只新基金涌入市场 公募基金市场规模持续扩大
- 世界微头条丨杰创智能:公司主营业务暂未直接涉及电子身份证领域
- 焦点观察:防欺凌儿歌六句话_君子天行健后面六句话
- 抚顺特钢(600399)6月7日主力资金净买入824.25万元
- 环球要闻:《暗黑破坏神4》快速卖装备方法 怎么快速卖装备?
- 全球快播:身份证号提取出生日期_身份证取出生日期函数
- 甘肃多举措保障低收入群体生活水平
- 环球简讯:挖金客:6月6日融资买入826.25万元,融资融券余额4117.15万元
- 海关总署:前5个月我国进口铁矿砂4.81亿吨 增加7.7%|环球讯息
- 银条回收价格多少钱一克(2023年06月07日)
- 工业母机概念震荡上行 华工科技涨超9% 工业母机ETF(159667)涨超2% 天天速看料
- 曹华恩(关于曹华恩介绍)_天天热点评
- 《皮克敏4》新中文版序幕预告片公布!将于7月发售
- 当前要闻:【港股异动】微盟集团(02013.HK)涨6.68%
- 17万“救命钱”不翼而飞,湖北大悟警方15小时跨省破案全额追回
- 海四达年产6GWh储能电池基地项目落地珠海市-最新资讯
- 环球热资讯!excel考勤表自动计算出勤天数教程_excel考勤表自动计算出勤天数
- 沃格尔首次发言!要率队夺冠,盛赞杜兰特,直言艾顿天赋堪比浓眉
- 什么是股份制公司_什么是股份
- 泽连斯基称已确认多国将向乌克兰提供F-16战机
- 最新消息:6月6日浙江万方天然橡胶报价小幅下调
- 6月6日美国玉米现货上涨,因优良率大幅下降金十期货6月7日讯,据外媒消息|精彩看点
X 关闭
最新资讯
- 全球简讯:小朋友的生态圈简直太无敌了!体验300来块钱小米生态的儿童手表
- 河南大学金明校区宿舍_河南大学金明校区-世界信息
- 【天天热闻】建桥街青石社区:开启降噪模式,全力助力高考
- 世界滚动:室内装饰设计施工图集7_关于室内装饰设计施工图集7介绍
- 【天天报资讯】安德烈·克里奇
- 世界信息:广东省广州市2023-06-04 14:56发布高温黄色预警
- 巨龙之眼任务在哪交_巨龙之眼
- 电梯应急处理平台_96333电梯应急平台是什么
- 以身作则的意思解释(以身作则的意思)
- 深蓝S7即将上市,南京智慧工厂迎来下线发运
- 年轻人行走职场,要小心这六种同事,不仅混的差,还频繁吃亏
- 大烨智能(300670)6月6日主力资金净卖出1769.24万元-当前关注
- 缅甸仰光发生一起爆炸 致6人受伤
- 价格战冲击波影响延续,二手车市场迈入直播赛道
- 【环球快播报】istp型人格占比(istp型人格)
- 最资讯丨海委全面完成海河流域在建水利工程安全度汛风险隐患抽查
- 2019一季度安全生产工作情况总结 2019安全生产工作总结
- 30宀佸濡囧崟韬笁骞磋鎵句汉_25岁寡妇单身三年晚上居然要
- 世界聚焦:不限时的云玩游戏软件推荐
- 环球新消息丨马自达2的轴距是多少寸(马自达2的轴距是多少)
- 预计iPhone 13 的交付时间越来越指向满足供需平衡的阵容-环球今日讯
- 全球微速讯:掌趣科技:大股东刘惠城拟减持不超1%股份
- 中德储蓄银行好吗_中德储蓄银行
- 汉滨区叶坪镇幼儿园志愿服务队_关于汉滨区叶坪镇幼儿园志愿服务队简述
- 创意视频丨世界环境日:山河画卷中的最美中国色
- 拓普集团:业绩说明会定于6月12日举行
- 全球最新:聊城安全教育平台官网_聊城安全教育平台
- 法网公开赛一幕!输球后,俄罗斯选手向乌克兰对手竖起大拇指|环球聚看点
- 飞天茅台在英国“定价”曝光,国内外差异明显,网友:看碟下菜?
- 南安市政府召开常务会议 环球即时
- 时讯:绫濑南
- 皇马官宣本泽马离队 结束14年俱乐部生涯
- 各地综合施策全力护航高考
- 不到8000元入手惠普VICTUS光影精灵9 这波福利机不可失
- 扔一个烟头,赔了 12 万元
- 埋深1944米 四川峨汉高速特长超深埋隧道洞通
- 迪森股份:证券事务代表麦良芳辞职
- 2023吕梁中考具体时间安排 什么时候考试|世界看热讯
- 高考期间天气如何?广东雷雨天气频繁,局部暴雨或大暴雨-世界今亮点
- 【全球播资讯】突破!已达国际先进水平
- 海口一学生为购买周杰伦演唱会门票被骗8万多,警方已立案 环球热议
- 摩根专栏谈伊布:虽不是历史最佳,但他是足球史上伟大的球员之一
- 2023年5月境外人民币市场综述
- 有创意的窗帘店名字 窗帘店起名字优雅大气300个 天天报资讯
- 彻底放弃英特尔?苹果所有电脑产品均搭载自研芯片
- 需求端没有起色 苯乙烯价格反弹高度有限
- 热点聚焦:加油,决胜高考! 校长们深情打CALL
- 17天11涨停!这只“妖股”遭上交所采取监管措施,1.5万户股东集合竞价“吃”跌停 热点评
- 厦门今起三天多云炎热天气将成主旋律 时有雷阵雨-全球动态
- 天天日报丨资金持续增配,TMT有望迎“第二春”
X 关闭