设计模式-问题-原型模式+建造者模式

原型模式

通过实现Cloneable接口怎么实现克隆原理是什么?有什么问题?代码中是如何验证是深克隆还是浅克隆的?

一般都是直接基于内存二进制流来进行拷贝,不会经过构造函数,性能能够提升很多。

  • 注意

    • 是浅拷贝的

      • 引用数据类型是不会被拷贝的,拷贝的是内存地址,不会创建一个新的

      • final修饰的变量是不会被拷贝的

  • 验证方式

    • 通过比较内存地址来判断

深克隆有哪些解决办法?

  • 通过序列化和反序列化

  • 通过Json工具

如果我需要单例,怎么防止克隆破坏单例

  • 重写readResolve方法

建造者模式

什么情况下应该考虑到使用建造模式?

  • 相同的方法,不同的执行顺序会产生不同的结果的时候需要用到

  • 产品类非常复杂,或者产品类的调用顺序不同产生了不同的效能

  • 对象构建的过程会用到一些其他对象,对象在创建的过程中不容易得到

  • 例如BeanDefinitionBuilder

Last updated