当前位置: 首页 > news >正文

微网站怎样做虫部落是谁做的网站

微网站怎样做,虫部落是谁做的网站,网站制作流程分为哪三步,做网站年入多少原型设计模式 一 .简介二. 案例三. 补充知识 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一 .简介 原型模式提供了一种机制,可以将原始对象复制到新对象&#xff0…

原型设计模式

    • 一 .简介
    • 二. 案例
    • 三. 补充知识

前言
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。
作者:神的孩子都在歌唱

一 .简介

原型模式提供了一种机制,可以将原始对象复制到新对象,然后根据我们的需要进行修改。原型设计模式使用java克隆来复制对象。

原型模式的克隆分为浅克隆和深克隆。

深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是指在进行对象复制时所产生的两种不同结果。

深拷贝:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。

浅拷贝:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。

Java中的Object类中提供了 clone() 方法来实现浅克隆。 Cloneable 接口是上面的类图中的抽象原型类,而实现了Cloneable接口的子实现类就是具体的原型类。

image-20240203225539994

二. 案例

通过一个例子就很容易理解原型设计模式。假设我们有一个从数据库加载数据对象。现在我们需要在程序中多次修改这些数据,因此使用通过new 一个新的对象,并再次从数据库加载所有数据并不是一个好主意。更好的方法是将现有对象克隆新对象中,然后进行数据操作。原型设计模式其实就是需要你确保正在拷贝的对象应该提供拷贝功能。它不应该由任何其他类完成。然而,是否使用对象属性的浅拷贝深拷贝 取决于 需求及其设计决策

以下是代码案例:

这里我定义了一个篮球类,通过重新实现clone方法来实现深拷贝

/*** @author chenyunzhi*/
public class Ball implements Cloneable{private final List<String> ballList;public Ball(){ballList = new ArrayList<>();}public Ball(List<String> ballList){this.ballList=ballList;}/*** 模拟从数据库中拿数据*/public void loadData(){ballList.add("basketball");ballList.add("soccer");}public List<String> getBallList() {return ballList;}@Overridepublic Ball clone() throws CloneNotSupportedException {return new Ball(new ArrayList<>(this.getBallList()));}}

然后我写了一个测试类方便测试,这里我new了一个 ball 对象,然后对ball对象进行拷贝,对拷贝的对象进行了增添删除他们相互之间都不影响

/*** @author chenyunzhi*/
public class PrototypePatternTest {public static void main(String[] args) throws CloneNotSupportedException {Ball ball = new Ball();ball.loadData();Ball ballNew =ball.clone();Ball ballNew1 = ball.clone();List<String> list = ballNew.getBallList();list.add("tennis");List<String> list1 = ballNew1.getBallList();list1.remove("basketball");// 输入修改后的球类列表System.out.println("ball List: "+ball.getBallList());System.out.println("ballNew List: "+list);System.out.println("ballNew1 List: "+list1);System.out.println("ball List: "+ball.getBallList());}}

测试结果

image-20240203232509211

结论:如果没有提供对象克隆,我们每次都必须调用数据库来获取球类列表。然后进行那些耗费资源和时间的操作。这就是java中原型设计模式的全部内容。

三. 补充知识

问题: 为什么浅拷贝拷贝的对象修改了某个String类型的值被拷贝对象的值没有变化?

在Java类库中,所有基本类型的包装类都是不可变类,例如Integer、Float等。

不可变类(Immutable Class) 在初始化后的所有信息不能被修改。而更改String成员的值相当于在堆中新建一个String引用,旧的String常量引用仍然存在于堆中,只不过还没回收,从而让两个引用不相等。这时你以为String是被克隆,但造成其不相等的原因其实是赋值。

作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接。

http://www.yayakq.cn/news/673378/

相关文章:

  • 企业网站关于我们网站建设-丹东
  • 郑州金水区网站建设企业推广网络营销外包服务
  • asp伪静态网站如何做筛选室内设计公司的运营模式
  • 兰州网站建设程序文案代写在哪里接单子
  • 帝国cms 网站描述的全局变量小程序赚钱app
  • 提供网站建设公司天元建设集团有限公司企业简介
  • 梅州建站公司网站设计
  • 站长怎么添加网站内容石家庄网络公司名单
  • 西安专业的网站优化东营在建项目
  • 如何给网站做二维码商业网站的后缀一般为
  • 中小型网站设计哪家好婚恋网站女孩子都是做美容
  • 做分类信息网站代码百度快照官网登录
  • 外贸做网站要多久做好水源logo设计制作网
  • 网站导航用什么字体怎样把广告放到百度
  • php网站前后台源代码分类网站建设多少钱
  • 分类信息网站建设多少钱php网站开发学习
  • 网站增加二级域名页面模板发布后再添加文章怎么办
  • 抚州的电子商务网站建设公司西瓜wordpress
  • 丰台网站开发联系电话设计包装公司
  • 给别人做网站必须有icpwordpress 批量图片
  • 移动建站工具沧州做网站
  • 中国站长站官网网页版微信二维码不出来
  • 对网站建设的意见建议北京网上注册公司流程
  • 一套企业网站设计图片wordpress上传网上打不开
  • 周宁县建设局网站厦门网站建设哪家比较好
  • 汽车网站网页模板苏州建站公司速找苏州聚尚网络
  • 雄安优秀网站建设方案有哪些企业网站做的不错
  • 方舟未来网站建设电脑初级入门课程自学网课
  • 十堰最专业的网站建设公司出国越南做网站8000保底
  • 绵阳市城乡建设和规划局网站漫画交流网站怎么做