设计模式------原型设计模式

    xiaoxiao2022-06-26  72

    创建型的模式,最后一种原型设计模式。

    是一种使用起来简单,可以配合单例模式或是工厂设计模式使用的。

    先看一下,原型设计模式是怎么回事儿吧。

    如果想使用原型设计模式。必须满足一个条件,首先实现Cloneable接口,然后重写clone方法。

    这样就算是完成了,然后就开始测试了

    创建完对象以后给Phone一个当前时间的出厂日期,然后clone,最后再修改Phone的出厂时间,结果我的clone的对象值也改变了。。是不是很奇怪,哈哈,这就是所说的浅复制(浅克隆),这到底是怎么回事儿呢?

    是这样的,现在有两个对象,一个是phone,一个是clone,他们都有time这个出厂日期的属性,在克隆完phone对象后有了clone对象,但是phone对象中的time属性肯定指向Date类型对象空间,clone中的time属性也将对象地址指向了跟phone中的同一个,所以phone中的time改变的时候clone的time属性也会跟着改变,这就是浅复制

    还有一种深复制(深克隆),那深复制是怎么回事儿呢?其实就跟浅复制相反,在改变原对象phone的time属性时,clone对象中的time不改变就是深复制了。

    深复制的实现方式有两种,

    第一种使用序列化和反序列化实现 (如果使用该方式实现,必须还要实现Serializable接口)

    优点:不用修改phone的类

    缺点:使用起来比较繁琐。

    还有一种通过代码我们自己来做深复制的方式,修改clone方法

    这样使用起来比较简单,两种方式都能实现深复制

    原对象的时候还是需要使用new来创建的,可以通过工厂或是单例模式配合使用更佳。

    下面说下我对原型设计模式的理解:

    其实就是Ctrl C 的操作,哈哈。。。可能我理解的比较肤浅,希望你能够留下你深层次的理解与我分享。谢谢


    最新回复(0)