Java教程

设计模式之原型模式(创建型)

本文主要是介绍设计模式之原型模式(创建型),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

概念:

        用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

        基于内存二进制流进行复制,不需要再经历耗时的对象初始化过程(不调用构造函数),可以提升性能。

原型模式的使用场景:

        1、创建对象成本较大(比如:占用CPU太多,消耗网络资源太多等)。

        2、系统中多处使用该类对象,且各个调用者都需要给它的属性重新赋值。

        3、创建对象过程比较繁琐(比如数据准备、访问权限等)。

优点:

        性能提高。

        逃避构造函数的约束。

缺点:

配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。

必须实现Cloneable接口。

原型模式UML图:

原型模式类似于现实世界的细胞分裂

代码如下:

public class Prototype<T extends Prototype> implements Cloneable{

    public T clone() {
        T prototype = null;
        try {
            prototype = (T)super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return prototype;
    }
}
public class ConcretePrototype extends Prototype<ConcretePrototype> {

    public ConcretePrototype() {
        System.out.println("构造方法");
    }

    public void show() {
        System.out.println("原型模式实现类"+this.hashCode());
    }
}
public class PrototypeDemo {

    public static void main(String[] args) {
        ConcretePrototype concretePrototype = new ConcretePrototype();
        for(int i=0;i<10;i++) {
            ConcretePrototype cloneConcretePrototype = concretePrototype.clone();
            cloneConcretePrototype.show();
        }
    }

}

输出:

构造方法
原型模式实现类685325104
原型模式实现类460141958
原型模式实现类1163157884
原型模式实现类1956725890
原型模式实现类356573597
原型模式实现类1735600054
原型模式实现类21685669
原型模式实现类2133927002
原型模式实现类1836019240
原型模式实现类325040804

深克隆和浅克隆:

浅克隆:只负责克隆按值传递的数据

深克隆:除了浅克隆要克隆的值外,还负责克隆引用类型的数据,基本上所有属性数据都会被克隆出来

原型模式属于深克隆。

这篇关于设计模式之原型模式(创建型)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!