定义
在某些系统中,我们可能需要生成大量相同或者相似的对象,如果用传统的构造函数,那样是非常麻烦且耗时的,因此有了原型模式,即用一个已经创建好的实例,通过复制该原型来快速生成一个原型相同或者相似的新对象。
原型模式的结构
首先我们先写出原型模式的三个主要角色
- 抽象原型类 : 规定具体原型对象必须实现的接口方法
- 具体原型类 : 实现抽象原型类的clone()方法
- 访问类 : 使用具体原型类中的clone()方法来创建新对象
原型模式写法
假设我们有一个RealUserTable对象,而在我们的代码中需要大量创建相似的RealUserTable对象,那么按原型模式的定义我们可以如下书写:
public class RealUserTable implements Cloneable {
RealUserTable(){
System.out.println("原型已创建");
}
public Object clone() throws CloneNotSupportedException{
System.out.println("具体原型已创建");
return (RealUserTable)super.clone();
}
}
测试类如下:
public class MyTest{
public static void main(String[] args) throws CloneNotSupportedException {
RealUserTable realUserTable = new RealUserTable();
RealUserTable mUserTable = (RealUserTable) realUserTable.clone();
System.out.println("realUserTable==mUserTable? "+(realUserTable==mUserTable));
}
}
运行结果为:
原型已创建
具体原型已创建
realUserTable==mUserTable? false
Process finished with exit code 0
由运行结果可以得知我们创建了一个新的mUserTable实例,且没有通过RealUserTable的构造方法,而是通过调用clone()方法来创建的。
原型模式适用场景
原型模式可以用来快速的生成对象,而这种对象却又具有如下特点
- 需要生成大量的此对象
- 这些对象相似或者相同
- 直接通过构造方法生成比调用clone()方法复杂,耗时更多。
原型模式整体来说,核心思路就是利用clone()方法快速生成新对象,达到节省创建对象时间的目的。原型模式就给讲到这里啦,觉得对您有帮助记得点个赞哦。