原型模式

一、概述

原型模式的定义是用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。简单来说就是拷贝一个新对象。

拷贝通常有浅拷贝和深拷贝,那么js中浅拷贝很容易实现,所以接下来主要用该模式实现深拷贝。

例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

优点 : 

1、性能提高。 

  • 2、逃避构造函数的约束。

  • 缺点 : 

  • 1、配备克隆方法需要对类的功能进行全面考虑,这对于全新的类不是很难,但对于已有的类不一定很容易。 

  • 2、必须实现 Cloneable 接口的方法。

  • 使用场景 : 

  • 1、资源优化场景。

  • 2、类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。

  • 3、性能和安全要求的场景。

  • 4、通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。

  • 5、一个对象多个修改者的场景。

  • 6、一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。 

  • 7、在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。

  • 二、运用

    原型模式的角色:

  • Prototype:抽象原型角色,抽象类或者接口,用来声明clone方法。

  • ConcretePrototype:具体的原型类,是客户端角色使用的对象,即被复制的对象。

  • Prototype 类

    ConcretePrototype 类

    ConcretePrototype1 和 ConcretePrototype2 就是用户使用的普通对象,原型模式中让一个普通对象拷贝一个自己,仅需要继承 Prototype 类,重写 clone 方法即可。


    test:

    你可能感兴趣的:(原型模式)