概述
原型模式是一种创建型模式,允许用户从一个样板实例中复制出一个内部属性一致的对象,俗称为克隆.被复制出来的实例就是我们所称的原型.
多用在创建实例比较复杂或者耗时的情况下,因为复制一个已经存在的实例可以使程序运行更高效.
定义
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
使用场景
类初始化需要消化非常多的资源,通过原型拷贝避免这些消耗
通过 new 产生一个对象需要非常繁琐的数据准备或访问权限
一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,保护原始对象.
UML类图
-
Client : 客户端用户。
-
Prototype : 抽象类或者接口,声明具备clone能力。
-
ConcretePrototype : 具体的原型类.
原型模式主要用于对象的复制,其原型类(ConcretePrototype)想要被复制,需要满足如下条件
-
实现Cloneable接口,此接口相当于Prototype角色.
-
复写 clone方法.并将其包访问权限修改为public的.
Object中的clone 方法是受保护的,如果一个类实现了Cloneable接口,clone方法就会返回改对象的逐域拷贝,否则会抛出CloneNotSupportedException异常
Cloneable接口中没有任何方法,它仅仅是一个标记接口,只有实现此接口的对象才能被拷贝。