Android编程设计模式之原型模式实例详解编程设计模式之原型模式实例详解
本文实例讲述了Android编程设计模式之原型模式。分享给大家供大家参考,具体如下:
一、介绍一、介绍
原型模式是一个创建型的模式。原型二字表明了该模型应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,
这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型也是可定制的。原型模型多用于创建复杂的或者构
造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。
二、定义二、定义
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
三、使用场景三、使用场景
(1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。
(2)通过new产生一个对象需要非常繁琐的数据准备或访问权限,这时可以使用原型模式。
(3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使
用,即保护性拷贝。
需要注意的是,通过实行Cloneable接口的原型模式在调用clone函数构造实例时并不一定比通过new操作速度快,只有当通过new构造
对象较为耗时或者说成本较高时,通过clone方法才能够获得效率上的提升。因此,在使用Cloneable时需要考虑构建对象的成本以及做
一些效率上的测试。当然,实现原型模式也不一定非要实现Cloneable接口,也有其他的实现方式,这里将会对这些一一说明。
四、原型模型的四、原型模型的UML类图类图
图中角色介绍:图中角色介绍:
Client:客户端用户。
Prototype:抽象类或者接口,声明具备clone能力。
ConcretePrototype:具体的原型类。
五、原型模式的简单实现五、原型模式的简单实现
下面以简单的文档拷贝为例来演示一下简单的原型模式,我们在这个例子中首先创建了一个文档对象,即WordDocument,这个文档中
含有文字和图片。用户经过了长时间的内容编辑后,打算对该文档做进一步的编辑,但是,这个编辑后的文档是否会被采用还不确定,
因此,为了安全起见,用户需要将当前文档拷贝一份,然后再在文档副本上进行修改,这与《Effective Java》一书中提到的保护性拷
贝有些类似,如此,这个原始文档就是我们上述所说的样板实例,也就是将要被“克隆”的对象,我们成为原型:
示例代码:
/**
* 文档类型,扮演的是ConcretePrototype角色,而cloneable是代表prototype角色
*/
public class WordDocument implements Cloneable {
//文本
private String mText;