原型模式源码分析

2019-07-16  本文已影响0人  别拿爱情当饭吃

原型模式

定义

使用场景

优点

缺点

源码解析

public interface Cloneable {
}

Cloneable接口,就是原型模式的关键。在原型模式中,要特别注意区分:深克隆和浅克隆

浅克隆

public Object clone(){
    return super.clone();
}

浅克隆,不能克隆引用类型对象。和源对象持有相同引用

深克隆

public CacheKey clone() throws CloneNotSupportedException {
    CacheKey clonedCacheKey = (CacheKey) super.clone();
    clonedCacheKey.updateList = new ArrayList<Object>(updateList);
    return clonedCacheKey;
  }

深克隆,可以克隆引用类型对象。和源对象持有不同的引用

原型模式破坏单例模式

原型模式和单例模式,其实原型模式的clone()方法可以破坏单例模式(前提要单例类实现Cloneable接口)

源码剖析

可以自行去IDE那看看,那些类实现了Cloneable接口,基本的类有:
ArrayList;HashMap;MyBatis的CacheKey等等。
代码都挺容易看懂的。

上一篇 下一篇

猜你喜欢

热点阅读