原型模式

一,原型模式

1.1,对原型模式的理解

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

1.2,要解决的问题

主要解决对象的创建问题,提升创建对象的性能。每new一次就会调用一次构造函数,如果构造函数的执行时间很长,多次执行这个初始化操作就要消耗很多时间降低效率。一般在初始化的信息不发生变化的情况下,克隆是最高的方法,这即隐藏了对象创建的细节,又对性能是大大的提升。

1.3,原型模式结构框图

在这里插入图片描述

1.4,应用场景

利用原型模式来模拟复印简历,下面的代码是用java 实现

// 简历类
public class Resume implements Cloneable {
    private String name;
   
    public Resume(String name){
        this.name = name;
    }

	void setName(String name)
	{
		this.name = name;
	}
  
    // 克隆该实例
    public Object clone(){
        Resume resume = null;
        try {
            resume = (Resume) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return resume;
    }
}

// 客户端
public class Client 
{
    public static void main(String[] args) 
	{
		// 张三简历
		Resume zhangsan = new Resume("张三");

		// 由张三的简历复制出一份李四的简历
		Resume lisi = (Resume) zhangsan.clone();
		lisi.setName("李四");
	}
}

程序分析:

在java中Object类是所有类的根类,所有的Java类都继承自Object,而Object类提供了一个clone()方法,该方法可以将一个java对象复制一份,因此在java中可以直接使用clone()方法来复制一个对象。但是需要实现clone的Java类必须要实现一个接口Cloneable,该接口表示该类能够复制且具体复制的能力,如果不实现该接口而直接调用clone()方法会抛出CloneNotSupportedException异常。

1.5,原型模式的优缺点

优点:

  1. 如果创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率。
  2. 不用重新初始化对象,而是动态地获得对象运行时的状态。

缺点:

  1. 在实现深克隆的时候可能需要比较复杂的代码。
  2. 需要为每一个类配备一个克隆方法,而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事,必须修改其源代码,违背了“开闭原则”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值