蜗牛大师

吴庆龙的学习笔记

导航

设计模式-02原型模式(Prototype Pattern)

1.模式动机

在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。

简单粗暴的理解就是:创建一个对象当做模板,然后利用这个模板使用clone方法快速的创建一个新的对象。

2.模式定义

原型模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。用这种方式创建对象非常高效,根本无须知道对象创建的细节。

3.模式代码

使用 Java 中提供的clone方法实现原型模式非常简单。但是要注意浅克隆深克隆,这里就不具体说这两个名词了。

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class User implements Cloneable{

    private String name;

    public User(String name) {
        this.name = name;
    }

    @Override
    protected User clone() throws CloneNotSupportedException {
        System.out.println("原型对象复制成功");
        return (User) super.clone();
    }
}
public class Client {

    public static void main(String[] args) throws CloneNotSupportedException {
        User user = new User("Mike");
        System.out.println(user);

        User cloneUser = user.clone();
        System.out.println(cloneUser);
    }

}

运行结果:

User(name=Mike)
原型对象复制成功
User(name=Mike)

4.总结

原型模式通常适用于以下场景:

  • 对象之间相同或相似,即只是个别的几个属性不同的时候。
  • 对象的创建过程比较麻烦,但复制比较简单的时候。

posted on 2020-01-20 12:39  蜗牛大师  阅读(151)  评论(0编辑  收藏  举报