美文网首页
Java学习笔记(4)-23种设计模式之原型模式

Java学习笔记(4)-23种设计模式之原型模式

作者: 非典型程序猿 | 来源:发表于2020-02-21 12:05 被阅读0次

定义

在某些系统中,我们可能需要生成大量相同或者相似的对象,如果用传统的构造函数,那样是非常麻烦且耗时的,因此有了原型模式,即用一个已经创建好的实例,通过复制该原型来快速生成一个原型相同或者相似的新对象。

原型模式的结构

首先我们先写出原型模式的三个主要角色

  • 抽象原型类 : 规定具体原型对象必须实现的接口方法
  • 具体原型类 : 实现抽象原型类的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()方法快速生成新对象,达到节省创建对象时间的目的。原型模式就给讲到这里啦,觉得对您有帮助记得点个赞哦。

相关文章

网友评论

      本文标题:Java学习笔记(4)-23种设计模式之原型模式

      本文链接:https://www.haomeiwen.com/subject/vcxcqhtx.html