六个创建型模式5: 原型模式-Prototype Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】

来源:互联网 发布:定情信物 知乎 编辑:程序博客网 时间:2024/05/29 13:58

动机就是复制克隆

原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。

原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于在软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原型模式是一种“另类”的创建型模式,创建克隆对象的工厂就是原型类自身,工厂方法由克隆方法来实现。

需要注意的是通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的。通过不同的方式修改可以得到一系列相似但不完全相同的对象。

原型模式的结构如图7-2所示:

这里写图片描述

在原型模式结构图中包含如下几个角色:

●Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体实现类。

● ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。

● Client(客户类):让一个原型对象克隆自身从而创建一个新的对象,在客户类中只需要直接实例化或通过工厂方法等方式创建一个原型对象,再通过调用该对象的克隆方法即可得到多个相同的对象。由于客户类针对抽象原型类Prototype编程,因此用户可以根据需要选择具体原型类,系统具有较好的可扩展性,增加或更换具体原型类都很方便。

原型模式的核心在于如何实现克隆方法,下面将介绍两种在Java语言中常用的克隆实现方法:

class ConcretePrototype implements Prototype{    private String  attr; //成员属性    public void  setAttr(String attr)    {        this.attr = attr;    }    public String  getAttr()    {        return this.attr;    }    public Prototype  clone() //克隆方法    {            Prototype  prototype = new ConcretePrototype(); //创建新对象            prototype.setAttr(this.attr);            return prototype;        }}

这里有一个例子工作周报的快速创建

我的总结:原型模式就是根据一个对象克隆一个新的对象,挺简单的。

参考链接:
原型模式

阅读全文
0 0
原创粉丝点击