java原型设计模式

原型模式的思想:将一个对象作为原型,对其进行复制,克隆,产生一个和原对象类似的新对象。

由上可见,一个原型类,只需要实现cloneable接口,复写clone方法。

java中的克隆,有两种:深浅之分,具体可看http://blog.csdn.net/zhangjg_blog/article/details/18369201/

首先是浅复制:对基本类型重新开辟空间,对引用类型,依旧指向原对象所指向的

public class Prototype implements Cloneable{
     public Objec clone()throws CloneNotSupportedException{
        Prototype proto = (Prototype)super.clone();
        return proto;
    }
}

再看深复制:复制该对象,基本类型,引用类型都是重新开辟空间.

深复制需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。

关于输入输出,看http://blog.csdn.net/zsw12013/article/details/6534619

public class Protopyte implements Cloneable,Serializable{
    private String string;
    public Object deepClone() throws IOException,ClassNotFoundException{
//写入当前对象的二进制流
           ByteArrayOutputStream bos = new ByteArrayOutputStream();
           ObjectOutputStream oos = new ObjectOutputStream(bos);
           oos.writeObject(this);
//读出二进制流产生的新对象
           ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteAray());
           ObjectInputStream ois = new ObjectInputStream(bis);
           return ois.readObject();
    }
         get,set
}
时间: 2024-10-17 00:17:03

java原型设计模式的相关文章

iOS与Java原型设计模式,欢迎扫二维码加入订阅号进行讨论

什么是原型模式 什么时候用到原型模式 原型模式有那些优缺点 oc与java语法上原型模式有那些异同及简单的例子 首先看什么是原型模式: java:Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.(用原型实例制定创建对象的种类,并且创建一个新的对象从原型对象拷贝而来.) iOS:客户端知道抽象prototype

Java描述设计模式(05):原型模式

一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个可以"克隆"自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例.这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new来创建. 3.代码实现 1).UML关系图 Java描述设计模

java/android 设计模式学习笔记(13)---享元模式

这篇我们来介绍一下享元模式(Flyweight Pattern),Flyweight 代表轻量级的意思,享元模式是对象池的一种实现.享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,缓存可共享的对象,来达到对象共享和避免创建过多对象的效果,这样一来就可以提升性能,避免内存移除和频繁 GC 等. 享元模式的一个经典使用案例是文本系统中图形显示所用的数据结构,一个文本系统能够显示的字符种类就是那么几十上百个,那么就定义这么些基础字符对象,存储每个字符的显示外形和其他的格式化数据

转 分享我在阿里工作十年接触过Java框架设计模式

转 原文: 分享我在阿里工作十年接触过Java框架设计模式 一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很方便…. 设计模式按照使用场景可以分为三大类:创建型模式(Creational Patterns).结构型模式(Structural Patterns).行为型模式(Behavioral Patterns). 创建型模式(Creationa

原型设计模式(prototype

# 什么是原型设计模式 > 这里与软件工程中的原型开发模式有那么一点类似的地方,我们首先需要构建出一个原型,这个原型可以在现实开发中抽象出来的具体类型,但是这个类型与具体的类又不同,需要抽取公共的部分,通过构建管理器,实现创建不同需要的类型, ### 考虑使用原型设计模式的三种情况 第一种情况是需要处理的对象太多,如果将它们分别作为一个类,必须要编写很多个类文件难以根据类生成实例时 第二种情况是生成实例的过程太过复杂,很难根据类来生成实例.例如,我们假设这里有一个实例,即表示用户在图形编辑器中使

Java 原型模式(克隆模式)

  Java 的设计模式有 23 种,前段时间小编已经介绍了单例模式,由于我们在学习 Spring 的时候在 bean 标签的学习中碰到了今天要讲的原型模式,那么小编就已本文来介绍下原型模式. 原型模式  在java中我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),在我们需要大量对象的情况下,原型模式就是我们可以考虑实现的方式.  原型模式我们也称为克隆模式,即一个某个对象为原型克隆出来一个一模一样的对象,该对象的属性和原型对象一模一样.而且对于原型对象没有任何

设计模式之原型设计模式

原型设计模式 原型设计模式的定义是原型实例指定对象的类型,通过拷贝这些原型来创建新的对象 原型设计的例子 以<>例子为例子:我们求职投简历,经历这一栏在投不同的公司需要修改,我们不要再去创建个人信息.工作经历, 通过拷贝来减少简历中对象的创建. 简历父类 package com.learn.java.javabase.designpattern.prototype; import lombok.Data; @Data public class Resume implements Cloneab

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过