原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.

原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何的细节.

设计模式 : 原型模式


下面是基本的原型模式的代码

原型类

public interface Prototype{
    /**
     * 克隆自身的方法
     * @return 一个从自身克隆出来的对象
     */
    public Object clone();
}
具体原型类
public class ConcretePrototype1 implements Prototype {
    public Prototype clone(){
        //最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了
        Prototype prototype = new ConcretePrototype1();
        return prototype;
    }
}


public class ConcretePrototype2 implements Prototype {
    public Prototype clone(){
        //最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了
        Prototype prototype = new ConcretePrototype2();
        return prototype;
    }
}

客户端代码

public class Client{
    /**
     * 持有需要使用的原型接口对象
     */
    private Prototype prototype;
    /**
     * 构造方法,传入需要使用的原型接口对象
     */
    public Client(Prototype prototype){
        this.prototype = prototype;
    }
    public void operation(Prototype example){
        //需要创建原型接口的对象
        Prototype copyPrototype = prototype.clone();
        
    }
}


一般在初始化的信息不发生变化的情况下,克隆是最好的方法,这既隐藏了对象创建的细节,又对性能是大大的提升,无须重新初始化对象,而是动态的获得对象运行时的状态.

浅复制与深复制

原始对象及其复本是引用同一对象的.

浅复制 : 被复制的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象.

如果我们需要把要复制的对象所引用的对象都复制一遍,那么就需要用到深复制了.

深复制 : 深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象.


相关文章:

  • 2021-09-24
  • 2022-01-19
猜你喜欢
  • 2021-11-10
  • 2022-12-23
  • 2021-12-12
  • 2021-11-20
  • 2021-11-20
  • 2021-11-20
  • 2021-08-08
相关资源
相似解决方案