热点聚焦:设计模式-原型模式示例
腾讯云 2023-05-05 03:24:29


(资料图片)

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

// 原型接口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() 方法;如果对象比较复杂,包含了多个引用类型的成员变量,就需要使用深复制来确保新对象和原有对象的属性是完全独立的。

热点聚焦:设计模式-原型模式示例

2023-05-05

焦点热讯:插队事件闹大了!当事人发文称:老人已失眠,如今表情车贴售卖!

2023-05-05

今日看点:北京70所学校参与中等职业教育自主招生计划,招生1.8万余人

2023-05-04

云南元阳已达41.5℃,广西隆林39.9℃发布高温红警

2023-05-04

全球快资讯:北京交管部门在104处路口设立大货车“右转必停”标志标线

2023-05-04

世界信息:台式电脑电源哪个牌子好百元-台式电脑电源哪个牌子好

2023-05-04

五四青年节,科龙空调联动山东大学举办小树林音乐节,引发年轻群体关注

2023-05-04

白宫宣布首个AI监管计划:拨款1.4亿美元研究,制定指导方针_当前热闻

2023-05-04

泡脚盆品牌排名_泡脚盆品牌排行榜 天天观察

2023-05-04

以“BR/A”结尾,巴西组装的苹果 iPhone 14 曝光-新消息

2023-05-04

每日速讯:维尔利(300190.SZ)累计回购约1.53%股份 耗资5199.19万元

2023-05-04

【汇总】2023年中级会计职称工具书电子版抢先试读 每日看点

2023-05-04

徽派建筑的艺术风格_徽派建筑风格特点_当前热议

2023-05-04

陈小春携妻儿出游,被认出后翻墙逃跑好社恐,年过半百身手矫健|全球新动态

2023-05-04

激发高技术制造业创新驱动力

2023-05-04

“即购即提”等海南离岛免税新政红利持续释放 世界最资讯

2023-05-04

当前短讯!山东一男子连救2次跳河女子后溺亡 具体情况如下!

2023-05-04

美甲班美甲培训大概多少钱_美甲培训大概需多少钱

2023-05-04

异动快报:奥飞娱乐(002292)5月4日14点4分触及涨停板-天天时快讯

2023-05-04

慧辰股份: 控股子公司北京信唐普华科技有限公司主要做政府信息化及IT综合服务方面的业务_世界消息

2023-05-04