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

绍兴做网站鼎成沈阳口碑最好的装修公司

绍兴做网站鼎成,沈阳口碑最好的装修公司,setnet科技网站建设,平安区wap网站建设公司JAVA设计模式——(十二)原型模式(Prototype Pattern) 介绍理解实现Email类测试 应用 介绍 用原型实例指定创建对象的种类,并且通过复制原型已有的对象用于创建新的对象。 理解 原型实例便是我们需要复制的类的实例&…

JAVA设计模式——(十二)原型模式(Prototype Pattern)

  • 介绍
  • 理解
  • 实现
    • Email类
    • 测试
  • 应用

介绍

用原型实例指定创建对象的种类,并且通过复制原型已有的对象用于创建新的对象

理解

原型实例便是我们需要复制的类的实例,原型说的是可以被复制的那个对象。这是一种构建实例的方式,用于对对象进行复制,而形成一个新的实例。

我们知道Obejct对象的clone()方法可以对对象进行克隆,但是clone()方法是protected类型的,protected类型的访问权限是:同一个类、同一个包、不同包的子类,而不允许不包的非子类访问。实际上,所有的类都会潜在的继承Object类,所以均是Object的子类,那么在所有类的内部均可以直接调用clone()方法,或者重写该方法,让其支持在其他类中调用。

但是,clone()方法并不能执行成功,而是会报出java.lang.CloneNotSupportedException。其实在clone()方法的源码中解释了这个原因。

如果对象的类不支持 Cloneable 接口。重写 clone 方法的子类也会抛出此异常,表示实例无法被克隆。

所以需要实现Cloneable接口。

实现步骤:

  1. 创建原型
  2. 实现Cloneable接口
  3. 重写clone()方法

实现

以发邮件作为例子,通原型模式,减少邮件实例的创建时间。

Email类

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/5/6 10:49* @Contact 643947568@qq.com*/
public class Email implements Cloneable{private String receiver;private String sender;private String subject;private String content;public Email(String subject, String content) {this.content = content;this.subject = subject;}//重要-------------------!!!------------@Overridepublic Email clone() {try {Email clone = (Email) super.clone();// TODO: copy mutable state here, so the clone can't change the internals of the originalreturn clone;} catch (CloneNotSupportedException e) {throw new AssertionError();}}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getReceiver() {return receiver;}public void setReceiver(String receiver) {this.receiver = receiver;}public String getSender() {return sender;}public void setSender(String sender) {this.sender = sender;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}
}

测试

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/5/6 10:42* @Contact 643947568@qq.com*/
public class Main {public static void main(String[] args) throws CloneNotSupportedException {Email email = new Email("活动通知", "会员88折,截止时间5月1日");Email clone = email.clone();System.out.println(email.hashCode());System.out.println(clone.hashCode());for (int i = 0; i < 10; i++) {Email clone1 = email.clone();clone1.setSender("test");clone1.setReceiver("接收方:" + i);System.out.println("发送邮件" + clone1);}}
}

效果

990368553
1096979270
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:0', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:1', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:2', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:3', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:4', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:5', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:6', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:7', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:8', sender='test', subject='活动通知'}
发送邮件Email{content='会员88折,截止时间5月1日', receiver='接收方:9', sender='test', subject='活动通知'}

应用

原型模式可能很容易的创建一个对象的许多个实例,在实际运用中,对于需要new出很多个相同类型对象的情况,比较实用。


文章转载自:

http://0TQ8YRf0.kkLwz.cn
http://mB1QX6eN.kkLwz.cn
http://UUpMEP9U.kkLwz.cn
http://SdcdnIV3.kkLwz.cn
http://WphruRTW.kkLwz.cn
http://DO0NUpkL.kkLwz.cn
http://up0k6ARA.kkLwz.cn
http://Ewjxg64r.kkLwz.cn
http://PLsWaXaD.kkLwz.cn
http://306Uwezy.kkLwz.cn
http://zv0ZJfHr.kkLwz.cn
http://ukECV53u.kkLwz.cn
http://sLaboM7Y.kkLwz.cn
http://p50rOEg3.kkLwz.cn
http://uM8rOD6i.kkLwz.cn
http://8gl69Dan.kkLwz.cn
http://ZcfcJN1m.kkLwz.cn
http://90RXO3hq.kkLwz.cn
http://KZrdHnDv.kkLwz.cn
http://iUiSaHpf.kkLwz.cn
http://2HXVsdGW.kkLwz.cn
http://czIJzGfC.kkLwz.cn
http://1Xy2egfF.kkLwz.cn
http://IwWUA8uw.kkLwz.cn
http://5NXiByZ5.kkLwz.cn
http://kcKL1Qe2.kkLwz.cn
http://x79MCCDU.kkLwz.cn
http://rR6cnNqp.kkLwz.cn
http://4f0nlaQi.kkLwz.cn
http://0PdnBqwk.kkLwz.cn
http://www.dtcms.com/wzjs/734168.html

相关文章:

  • 专业的徐州网站开发网站死链接
  • wordpress电子书插件seo推广方法
  • 永州网站建设如何网站备案时间也太慢了
  • 吴江做网站公司苏州注册公司地址
  • 宁波市网站集约化建设通知企业网站前期建设方案案例
  • 做网站价格多少wordpress博客工具
  • 企业网站建设运营的灵魂是内容营销策划方案
  • 网站设计是用ps做图吗微信公众平台app下载安装
  • wordpress头部导航栏网页seo是什么意思
  • wordpress 网站打开速度慢学做网站教学百度网盘
  • 云南省建设交易中心网站射阳建设网站多少钱
  • 四川旅游网站设计论文制作短链接网站
  • 网站排名查询软件北京杰诚 做网站
  • 怎么制作网站游戏ai智能ppt制作
  • 外包网站建设价格蝉知cms wordpress
  • 电子销售网站模板徐州数据网站建设介绍
  • 网站建设中出现的错误代码xss wordpress script
  • 深圳网站建设行业排行wordpress plugins插件
  • 绍兴大明电力建设有限公司网站邯郸公司起名
  • 建设商务网站目的如何制作出优秀的ui设计
  • 电商网站平台搭建网站视频模块配置参数
  • 12388网站建设管理情况html网页制作软件有哪些
  • 怎样给网站做备案网站编辑做app
  • WordPress影视站源码企业宣传型网站建设
  • 网站策划方案沧州网站备案
  • 公司做网站公司营销型网站建设开发价格
  • 中山做网站建设联系电话株洲网站建设服务公司
  • 在别的公司做的网站思茅北京网站建设
  • 手机网站导航按钮湖南高速通app下载
  • 免费开源网站深圳专业网站建