日期:2023-05-05 15:56:45 来源:腾讯云
(相关资料图)
演示原型模式的实现方法:
// 原型接口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() 方法;如果对象比较复杂,包含了多个引用类型的成员变量,就需要使用深复制来确保新对象和原有对象的属性是完全独立的。
标签:
设计模式-原型模式示例
回购股票的会计分录
天天日报丨最新物流数据出炉 彰显中国经济活力十足
奇安信集团齐向东:数据安全是数字政务的“生命线”。
全球实时:第133届广交会助力乡村振兴
天天速读:高澜股份5月5日盘中跌停
现货黄金价格创历史新高具体是什么情况|世界百事通
首期开通两条往返香港航线
科大讯飞:5月4日融资买入8.5亿元,融资融券余额81.72亿元
天天热资讯!赏民俗,回味“旧时光”
多措并举扩大托育服务供给-报资讯
天津河西区环湖中路地块以53.5亿元二度挂牌出让 当前短讯
韩雅杰:办理民事案件需要更多耐心-世界观察
转型不顺披星戴帽 *ST园城实控人筹划控制权变更 环球视点
幼儿园播报小故事(简短的幼儿小故事)
恩捷股份最新公告:拟以1亿元-1.5亿元回购股份_全球讯息
美国系列就业数据对“美联储结束加息周期”的观点不友好
家庭联产承包责任制的具体内容_家庭联产承包责任制的意义
视点!证监会同意天承科技、时创能源科创板IPO注册
“五一”假期 广西消费市场繁荣购销两旺
侵犯注册商标罪司法解释有哪些内容
在岸人民币兑美元16:30收盘报6.9162,较上一交易日涨122个基点
3月份精炼铜(电解铜)产量105.4万吨|热头条
小鹏g92022款570pro采用流线型设计,线条流畅 每日观点
《寻味上海》│龙趸本味:粥水浸龙趸鱼片_全球新视野