设计模式之禅——原型模式

原创 2016年08月29日 15:28:08

原型模式的定义:不通过new关键字来产生一个对象,而是通过对象复制来实现的模式就叫做原型模式

原型模式的简单程度仅此于单例模式和迭代器模式。

见代码

public class Student implements Cloneable{
    private String classes;
    private String name;
    public void setClasses(String classes){
        this.classes = classes;
    }
    public String getClasses(){
        return this.classes;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }

    public void output(){
        System.out.println("我是" + this.classes + "的" + this.name);
    }

    @Override
    public Student clone(){
        Student studuent = null;
        try{
            studuent = (Student)super.clone();
        }catch (CloneNotSupportedException e){

        }
        return studuent;
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.setClasses("三班");
        student.setName("hms");
        student.output();
        Student student1 = student.clone();
        student.output();
    }
}
/*
我是三班的hms
我是三班的hms
*/

特点

1、实现Cloneable接口,这个接口是JDK自带的,里面没有任何方法。它的作用就是”标示“——告诉虚拟机这个类可以被拷贝
2、重写Object的clone()方法。

原型模式的优点


1、性能优良
原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现优点

2、逃避构造函数的约束。
它不再需要构造函数,这既是它的优点,也是它的缺点

使用场景


1、资源优化场景
类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等

2、性能和安全要求
通过new一个对象要非常繁琐的数据准备或访问权限,则可以使用原型模式

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


注意事项
原型模式是不再执行它的构造函数的!

浅拷贝与深拷贝


浅拷贝是你新拷贝的对象仍然与原对象共享成员变量。这意味着你新拷贝的对象修改之后原有对象的成员变量肯定也会被修改。这些成员变量是 : 非【基本数据类型和String类型】,如ArrayList类型,那么怎么让ArrayList成为深拷贝呢?在clone方法内单独拷贝它,如

this.arrayList = (ArrayList<String>)this.arrayList.clone();


深拷贝就是拷贝了原有对象的所有东西~

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式之禅——代理模式(二)代理模式&AOP编程&JDK对代理模式的支持

本篇文章还是用上一篇动态代理的例子设计模式之禅——代理模式(一)普通代理&强制代理&虚拟代理&动态代理ok,上一篇我们已经讲了动态代理最简单的表现形式,现在我们为之前的例子加一个需求——想让游戏登陆之...

设计模式之禅——抽象工厂模式

**抽**象工厂模式的定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。抽象工厂模式的通用类图抽象工厂是工厂方法模式的升级版本,在多个业务品种、业务分类时,通过抽象工厂模式生...

设计模式——原型模式

  • 2013年08月11日 16:47
  • 4KB
  • 下载

设计模式之禅之 原型模式

  • 2010年04月13日 12:49
  • 245KB
  • 下载

* 24种设计模式——原型模式

一、个性化电子账单 1. 广告信模板代码 public class AdvTemplate { //广告信名称 private String advSubject = "XX银行国庆信用卡抽奖活动...
  • yifanSJ
  • yifanSJ
  • 2017年07月16日 00:00
  • 173

设计模式4——原型模式

1. 什么是原型模式Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。2. 原型模式的特点 由原型对象自...

Java设计模式学习04——原型模式

原型模式  当我们需要构建一个与已经存在对象相似时,再通过new去产生一个新对象需要非常繁琐的数据准备或访问权限,而这时就可以用到原型模式,原型模式实现就是Java中的克隆技术,以某个对象为原型,复制...
  • xu__cg
  • xu__cg
  • 2016年10月26日 10:38
  • 470

设计模式——原型模式

原型模式可以动态的创建一个对象而不需要提供专门的new()操作,这无疑是一种非常有效的方式,快速的创建一个新的对象。 一、使用场景: 1、如果说我们的对象类型不是刚开始就能确定,而是这个类型是...

六、原型模式——设计模式学习笔记

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

设计模式——原型模式

原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式是一种创建型设计模式,原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之禅——原型模式
举报原因:
原因补充:

(最多只允许输入30个字)