焦点日报:设计模式-原型模式示例
(资料图片)
演示原型模式的实现方法:
// 原型接口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上海车展:出乎意料的错峰亮相 静评日产全新一代逍客
- 每日看点!戴望舒诗集大全_戴望舒诗集
- 当前通讯!通富微电(002156):5月4日北向资金减持136.79万股
- 巴基斯坦西北部一学校7名教师遇袭身亡
- 古蒂:无论梅西回不回巴萨,巴萨都无法获得欧冠冠军
- 格力伤了股民的心
- 抖音自己给自己点赞会拉低播放量吗 抖音自己给自己点赞会拉低播放量吗知乎-环球微动态
- 文旅部:拟确定3家旅游度假区为国家级旅游度假区
- 华众车载(06830)获北汽奔驰新能源车产品订单 预测销售额约9亿元
- 全球热门:太行山下 山西左权村民抢抓春播春种
- 世界即时:集度与小米,谁先撑不住?
- 世界速讯:四个“向好”!
- 150套新房落户肯特 热门
- 如果为百余年的芳华唱首歌?00后们会……|播资讯
- 益民基金董事长党均章离任 总经理王明德代任董事长-世界讯息
- 农业农村部:5月4日"农产品批发价格200指数"比节前上升0.28个点 当前报道
- 观天下!千万不要上中外合作办学:就是个坑值得上吗
- 比亚迪在杭州成立汽车销售新公司
- 力盛体育(002858)5月4日主力资金净买入1501.92万元-世界观热点
- 当日快讯:美国WTI和布伦特原油期货日内均转涨
- 【全球快播报】党群服务中心赋能新就业产业园
- 2022年跨境电商市场规模15.7万亿元 同比增长10.56%-每日热文
- 全球要闻:【劳动者之歌】向险而生 实战硝烟锻造特勤尖兵
- 英特尔再次“偏执”
- 姆巴佩该找出路了,巴黎定制三个引援标准,是伪豪门的最大败笔
- 淮北师范大学2023级拟录取硕士研究生提交定向培养协议书通知 天天头条
- 看点:女子劝阻小孩踢椅背遭其父母扇耳光 基本情况讲解
- 广东珠海太空中心迎观展热潮 带你沉浸式体验宇宙星河|当前热讯
- 中国药科大学1.2亿元转让PPAR激动剂专利_即时焦点
