实时

您的位置:首页>产品 >

焦点滚动:设计模式-原型模式示例


(资料图片仅供参考)

演示原型模式的实现方法:

// 原型接口public interface Prototype {    Prototype clone();}// 具体的学生类,实现原型接口并重写复制方法public class Student implements Prototype {    private String name;    private int age;        public Student(String name, int age) {        this.name = name;        this.age = age;    }        public String getName() {        return name;    }        public void setName(String name) {        this.name = name;    }        public int getAge() {        return age;    }        public void setAge(int age) {        this.age = age;    }        // 实现 clone() 方法,返回一个新的学生对象并复制原有对象的属性    @Override    public Prototype clone() {        return new Student(name, age);    }}// 客户端代码public class Client {    public static void main(String[] args) {        // 创建原型对象        Student stu1 = new Student("张三", 20);                // 克隆新对象并修改属性        Student stu2 = (Student) stu1.clone();        stu2.setName("李四");        stu2.setAge(21);                // 打印结果        System.out.println("stu1: " + stu1.getName() + ", " + stu1.getAge());        System.out.println("stu2: " + stu2.getName() + ", " + stu2.getAge());    }}

在这个示例代码中,我们定义了一个原型接口 Prototype 和一个具体的学生类 Student,该类实现了原型接口并重写了 clone() 方法。在客户端代码中,我们创建了一个原型对象 stu1,并通过克隆原型对象来生成一个新的学生对象 stu2,然后修改 stu2 对象的属性并打印结果。由于 stu1 和 stu2 对象是互相独立的,因此修改 stu2 的属性不会影响 stu1 对象的属性。

需要注意的是,在实现原型模式时,要确保克隆对象的深浅复制问题。在示例代码中,我们只需要对基本类型的成员变量进行复制,因此可以使用浅复制来实现 clone() 方法。但如果 Student 类中包含了非基本类型的成员变量,例如一个引用类型的属性 Address,那么就需要对这个属性进行深度克隆,否则复制出来的新对象和原有对象会共享这个引用类型的属性,可能会引发潜在的问题。

因此,在实现原型模式时,需要根据具体的场景选择适当的复制方法来确保克隆对象的正确性。如果对象比较简单,只包含基本类型的成员变量,可以使用浅复制来实现 clone() 方法;如果对象比较复杂,包含了多个引用类型的成员变量,就需要使用深复制来确保新对象和原有对象的属性是完全独立的。

关键词:

推荐阅读
在这个示例代码中,我们定义了一个原型接口Prototype和一个具体的学生类Student,该类实现了原型接口并重写

2023-05-05 13:39:23

有了卫星互联网,就意味着天上成百上千颗卫星,能时刻与地球上的手机、轮船、飞机、汽车等交换信息——身处

2023-05-05 12:51:57

今天来聊聊关于剑网三扶摇直上怎么用,剑网三扶摇直上811的文章,现在就为大家来简单介绍下剑网三扶摇直上

2023-05-05 12:13:10

消息(新闻联播):今年“五一”假期,消费需求强劲恢复,消费供给丰富多样。供需相互促进形成消费热潮,彰

2023-05-05 12:00:35

从2020年4月发布自弹自唱翻唱视频开始,王靖雯演唱的多首热歌登顶平台榜单,短视频平台歌曲播放超亿次;作

2023-05-05 11:30:17

在三国的历史中记载过这么一个故事,就是有两个人在争斗的时候,一个人把天子给带走了,一个人把文武百官给

2023-05-05 11:04:24

5月5日10点25分,汽车一体化压铸板块指数报934 348点,跌幅达2%,成交6 31亿元,换手率0 48%。板块个股中,

2023-05-05 10:42:10

今天来聊聊关于芫荽和香菜的区别视频,芫荽和香菜的区别的文章,现在就为大家来简单介绍下芫荽和香菜的区别

2023-05-05 10:04:33

在怀柔雁栖湖畔, 一个“放大镜”形建筑, 约90个足球场大小。 3月14日这里成功加速 装置的第一束电子束,

2023-05-05 09:47:46

曹德旺在一次访谈当中说,有三件事儿谁也不能马虎,看完之后呢,很多人都傻眼了,我觉

2023-05-05 09:35:53

格隆汇5月5日丨有投资者在投资者互动平台向华宝新能301327SZ提问贵公司有没有应急充电车产品随着新能源车的

2023-05-05 09:10:45

在立讯精密(002475)5月4日的业绩说明会上,针对“如何看待下半年消费电子景气度”的问题,公司董事长、总经

2023-05-05 08:55:30

[01导读][第02页]>>下一页导读:1AI开发有多烧钱?OpenAI去年亏损翻倍,CEO称需融资千亿美元2美国最高层官

2023-05-05 08:12:01

常州工程职业技术学院围绕“一站式”学生社区综合管理模式建设要求,在党委的领导下,一张图统筹建设、六项

2023-05-05 07:26:49

皮尔斯:小卡可能是最靠不住及最不走运的球员我是他会考虑退役,小卡,绿军,网球赛事,网球运动员,保罗·皮尔

2023-05-05 06:02:22

5月4日北向资金增持169 0万股万里扬。近5个交易日中,获北向资金增持的有2天,累计净增持71 22万股。近20个

2023-05-05 05:01:53

财联社据媒体援引消息人士报道,在接手瑞士信贷后,瑞银集团正在权衡如何处置瑞信旗下的瑞士子公司,包括可

2023-05-05 03:12:05

1、手机里的~~~沪江就出了手机版~~不过手机版资料少~~想要用手机进学习网~~我自己的办法是:先用手机进百度(

2023-05-05 01:14:15

1、全内容?难道你要简介?大学毕业后富家女唐猫猫丢了工作和男友,把所有的情绪寄托在网游里,却不想被网

2023-05-04 22:54:10

今日周四(5月4日),北京时间17:08,沪金主力开盘价458 26元 克,昨收价445 20元 克;黄金TD日内开盘价456 50

2023-05-04 22:03:57