设计模式-原型模式示例
时间:2023-05-05 16:06:58来源:腾讯云


(相关资料图)

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

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

标签:

生活指南
  • 八角的功效与作用_香叶的功效与作用|世界视讯

    1、做菜的时候放一些香叶有很多好处。由于其独特的味道,香叶经常被用于烹饪,它确实使我们的饭菜更加醇厚

  • “五一”消费市场见闻丨新能源汽车门店的试驾看车热潮-全球聚看点

    新华社北京5月4日电(记者吉宁)“五一”假期,各地旅游、购物和娱乐等活动升温,整个消费市场迎来一股不小

  • 屈原故里文化旅游区是什么样的?屈原故里文化旅游区内有哪些景观?

    屈原故里文化旅游区是什么样的?屈原故里景区位于秭归县新县城,毗邻三峡大坝且直线距离为600米,占地面

  • 厄尔尼诺或将带来全球变暖新高峰 厄尔尼诺现象是什么意思?

    厄尔尼诺或将带来全球变暖新高峰从北半球的亚洲、欧洲,到南半球的非洲、大洋洲,一波罕见的高温正滚滚

  • 今年以来二连浩特铁路口岸 出入境中欧班列突破1000列-全球即时

    今年以来,二连浩特铁路口岸累计接运出入境中欧班列1042列,同比增长7 0%。

  • 古董局中局佛头起源哪有_古董局中局之佛头起源在哪看_环球关注

    1、网剧《古董局中局》播出后,腾讯视频于昨日上线了互动迷你剧《古董局中局之佛头起源》(下称《佛头起源

  • 疙瘩汤怎么做步骤是什么?疙瘩汤养胃还是不养胃?

    疙瘩汤怎么做?食材:面粉适量,西红柿1个,瓢儿菜,大葱1根,姜1块,孜然粉,酱油疙瘩汤的做法1 将西红

  • 徐良是哪个学校毕业的?徐良的第一部作品是什么?

    徐良是哪个学校毕业的徐良(英文名:Xu Liang),1987年2月8日出生于山东省青岛市,毕业于青岛科技大学,

  • “五一”小长假 漯河河上街景区精彩不断

    一场声势浩大的美食节即将到来,等待吃货们的大驾光临!2023年4月29日-5月21日,逛美食集市、品传统名吃

  • 中国金茂发行最大规模碳中和CMBS产品 规模87.08亿元

    中国金茂宣布,中信证券-金茂凯晨2022年绿色资产支持专项计划(碳中和)完成簿记,发行规模87 08亿元,系目前全国规模最大的碳中和CMBS。

  • 南京Q1零售物业整体空置率小幅涨至4.6% 核心商圈租金小幅升0.2个百分点

    南京一季度零售物业整体空置率小幅环比上涨0 2个百分点至 4 6%;核心商圈租金环比小幅上升0 2个百分点,净租金约为21元每平方米每天。

  • 奢侈品牌在中国可能面临更多不确定性,美国或成为新的增长机会

    巴克莱周一在最新研究报告中指出,奢侈品牌在中国可能面临更多不确定性,特别是Gucci和Salvatore Ferragamo等在北京和上海开设了多家门店

  • 四大奢侈品巨头市值蒸发逾250亿欧元

    周一奢侈品巨头股价均出现较大幅度的下滑,全球最大奢侈品集团LVMH股价录得3 75%的下滑,市值蒸发121亿欧元至3094亿欧元,Gucci母公司开云

  • 巴奴毛肚火锅北京姚家园万象汇店4月26日开业

    4月26日,巴奴毛肚火锅北京朝阳区再迎新店——姚家园万象汇店,这也是北京第一家拥有独立海鲜池的门店,不仅设有酒水吧,顾客体验也作升级

  • 美国彭尼百货提议以每股68美元收购柯尔百货

    据纽约邮报消息,美国杰西潘尼公司(JCPenney)的所有者提议,以每股68美元的价格收购柯尔百货(Kohl)。

  • 呷哺呷哺推新品布局预制菜、速食经济和宅经济赛道

    4月25日,呷哺呷哺宣布,旗下呷哺食品推出多款预制菜和微波米饭新品,布局预制菜、速食经济、宅经济赛道。据悉,公司生产的花胶鸡、猪肚鸡

  • 民生
    • 农村意外险包括哪些范围呢?农村意外险100元怎么报销?

    • 基础设施公募REITs和股票有什么不同?基础设施REITs投资风险高吗?

    • 什么是转融通业务?转融通业务是什么?转融通公告后有涨的吗?

    • 微信个性化广告如何关闭?微信里的广告怎么来的?