- 浏览: 171456 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (193)
- Axis2 (10)
- Andriod (2)
- Java (22)
- Eclipse (2)
- 程序人生 (3)
- Windows (1)
- Sql Server 2005/2008 (7)
- 健身 (2)
- Log4j (1)
- Ant (1)
- Fatjar (2)
- 国际化 (1)
- Linux (3)
- JDBC (1)
- Oracle (2)
- 各种报错 (4)
- SWT (5)
- Tomcat (2)
- 车辆管理 (1)
- SVN (2)
- Spring (5)
- 域名服务器 (0)
- HaoWaYa (1)
- FTP (1)
- 集散中心 (1)
- 专业知识 (1)
- 面试准备 (19)
- 设计模式 (22)
- Junit (1)
- 软件下载 (3)
- 深入理解Java虚拟机 (3)
- 数据结构 (4)
- 雅思 托福 (0)
- UML (1)
- Maven (1)
- CV (1)
- ServiceMix (1)
- 电子书 (5)
- Struts1/2 (4)
- DOM W3C DHTML (3)
- Jawr (1)
- LoadRunner (1)
- Java反编译 (0)
- 英语学习 (0)
- 技术书籍 (1)
- Cygwin (0)
- ibatis (1)
- 数据库 (1)
- jQuery (0)
- s (2)
- 源代码项目 (5)
- JSRs (0)
- JCP (0)
- XML (2)
- Dojo (3)
- Effective Java (1)
- 一站到底 (3)
- JavaScript (6)
- DB2 (1)
- 刷机 (1)
- 字符 (1)
- Dynamic Web Project (1)
- 股市日记 (1)
- 代码片段 (0)
- CSS (1)
- PDF (0)
- 英语口语 (1)
- 乒乓球 (1)
- 体检 (0)
- 送花 (0)
- 面试准备-再战江湖 (5)
- ddq (0)
- sss (0)
- ssssss (0)
- 2020面试 (0)
最新评论
-
samsongbest:
Copperfield 写道你的目标很远大,佩服~惭愧,都忘了 ...
人生目标 -
Copperfield:
你的目标很远大,佩服~
人生目标
1. 含义
通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象.
2.类图
简单形式
登记形式
3.类代码
简单形式
/** * 抽象原型角色 * */ public interface Prototype extends Cloneable { Object clone(); } /** * 具体原型角色 */ public class ConcretePrototype implements Prototype{ public Object clone() { try{ return (Prototype)super.clone(); }catch(CloneNotSupportedException e){ return null; } } } /** * 客户角色 */ public class Client { private Prototype prototype; public void operation(Prototype example) { prototype = (Prototype) example.clone(); S.s(example); S.s(prototype); } public static void main(String[] a) { Client c = new Client(); c.operation(new ConcretePrototype()); } }
登记形式
/** * 抽象原型角色 * */ public interface Prototype extends Cloneable { Object clone(); } /** * 具体原型角色 */ public class ConcretePrototype implements Prototype { @SuppressWarnings("finally") public synchronized Object clone() { Prototype temp = null; try { temp = (Prototype) super.clone(); return temp; } catch (CloneNotSupportedException e) { S.s("Clone failed."); } finally { return temp; } } } /** * 原型管理器角色 */ public class PrototypeManager { private Vector objects = new Vector(); public void add(Prototype p) { objects.add(p); } public Prototype get(int i) { return (Prototype) objects.get(i); } public int getSize() { return objects.size(); } } /** * 客户角色 */ public class Client { public PrototypeManager pm = new PrototypeManager(); private Prototype prototype; public void registerPrototype() { prototype = new ConcretePrototype(); Prototype copytype = (Prototype) prototype.clone(); pm.add(copytype); } public static void main(String[] a) { Client c = new Client(); c.registerPrototype(); c.registerPrototype(); S.s(c.pm.getSize()); } }
4. 深复制
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * 具体原型角色 */ public class ConcretePrototype implements Prototype, Serializable { public Object clone() { Prototype concretePrototype = null; try { concretePrototype = (Prototype)deepClone(); return concretePrototype; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { return concretePrototype; } } /** * 通过在流里读来读去的方式来实现深复制 * * @return * @throws IOException * @throws ClassNotFoundException */ public Object deepClone() throws IOException, ClassNotFoundException { // 将对象写到流里 ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(this); // 从流里读回来 ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi = new ObjectInputStream(bi); return oi.readObject(); } }
z
发表评论
-
22 行为模式 - 调停者(Mediator)模式
2012-08-23 10:21 8321.用意 调停者模式包装了一系列对象相互 ... -
21 行为模式 - 解释器(Interpreter)模式
2012-08-23 10:18 7631.用意 给定一个语言之后,解释器模式可以定 ... -
20 行为模式 - 访问者(Visitor)模式
2012-08-22 10:28 8681.用意 封装一些施加于某种数据结构元素之上的操 ... -
19 行为模式 - 状态(State)模式
2012-08-22 10:25 7551.用意 状态模式允许一个对象在其内部状态改变的时候 ... -
18 行为模式 - 备忘录(Memento)模式
2012-08-22 10:12 847需要跟进多重检查点 ... -
17 行为模式 - 命令(Command)模式
2012-08-20 10:29 5651.用意 命令模式把一个请求或者操作封装到一个对象中。命令模 ... -
16 行为模式 - 责任链(Chain of Responsibility)模式
2012-08-20 10:24 7551.用意 在责任链模式里,很多对象由每一个对象对其下家的引用 ... -
15 行为模式 - 迭代子(Iterator)模式
2012-08-17 10:32 7391.用意 迭代子模式又叫游标模式,可以顺序地访问一个聚集中的 ... -
14 行为模式 - 观察者(Observer)模式
2012-08-09 10:27 8081.用意 观察者模式定义了一种一对多的依赖关系,让多个观察者 ... -
13 行为模式 - 模板方法(Template Method)模式
2012-08-09 10:21 6911.用意 准备一个抽象类,将部分逻辑以具体方法以及具体构造子 ... -
12 行为模式 - 策略(Strategy)模式
2012-08-07 10:00 7241.用意 针对一组算法,将每一个算法封装到具有共同接口的 ... -
11 结构模式 - 桥梁(Bridge)模式
2012-08-01 10:01 7371.用意 2.类图 3.代码 z 1.用意 将 ... -
10 结构模式 - 门面(Facade)模式
2012-07-31 13:52 6851.含义 外部与一个子系统的通信必须通过一个统一的门面对象进 ... -
09 结构模式 - 享元(Flyweight)模式
2012-07-31 13:47 8101.含义 享元模式以共享的方式高效地支持大量的细粒度对象。 ... -
8 代理(Proxy)模式
2012-07-31 09:48 8981.含义 代理模式给某一个对象提供一个代理对象,并由代理对象 ... -
7 装饰(Decorator)模式
2012-07-27 14:03 7021.含义 装饰模式又名包装(Wrapper)模式,以对客户端 ... -
6 合成(Composite)模式
2012-07-27 14:02 7711.含义 合成模式把部分和整体的关系用树结构表示出来。合成模 ... -
5 适配器(Adapter)模式
2012-07-27 13:52 7371. 含义 把一个类的接口变换成客户端所期待的另一种接口,从 ... -
3 建造(Builder)模式
2012-07-27 09:44 7141.含义:建造模式可以将一个产品的内部表象与产品的生成过程分割 ... -
1 抽象工厂(Abstract Factory)模式
2012-07-26 17:54 7381.类图 2.类 Creator ...
相关推荐
Java与模式.清晰.rar 第一部分 第1章 模式的简史和形而上学 第2章 统一建模语言UML简介 ...第20章 原始模型(Prototype)模式 第21章 专题:JavaBean的“冷藏”和“解冻” 第四部分 第22章 适配器(Adapter)模式[1]
4. **原始模型模式(Prototype模式)**: 原始模型模式通过克隆一个已有对象来创建新对象,避免重复编写相同代码。比如,收集一些肉麻情话,需要时直接复制使用。这种模式适用于需要频繁创建相似对象的情况,但每个...
17. 原始模型模式(Prototype) 原始模型模式用原型实例指定创建对象的种类,并且通过拷贝这个原型创建新的对象。这种模式使得对象创建可以灵活地变化。 18. 代理模式(Proxy) 代理模式为其他对象提供一个代理以...
4. 原始模型模式(Prototype Pattern) 原始模型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不...
Prototype 原始模型模式 原始模型模式是一种基于已存在的实例创建新实例的方式,通过复制一个现有实例来生成新的实例,而无需知道其具体实现细节。例如,在即时通讯软件中,可以通过复制预先设置好的情话模板,...
4. 原始模型模式(Prototype): 原始模型模式是通过克隆已有对象来创建新对象的设计模式。它提供了一种通过复制现有的对象来创建新对象的方式,减少了创建新对象的复杂度,尤其适用于对象创建成本较高的情况。原始...
4. 原始模型模式(Prototype模式):原始模型模式允许通过复制原型对象来创建新对象,提供了动态地增加或减少产品类的能力,且无需关心产品的具体实现细节。 5. 单例模式:单例模式保证一个类只有一个实例,并提供...
4. 原始模型模式(Prototype模式):该模式通过复制原型对象来创建新对象,允许动态地增加或减少产品类,适用于没有预定义等级结构的产品类集合。 5. 单例模式:单例模式确保一个类只有一个实例,并提供全局访问点...
com.javapatterns.prototype 原始模型模式 com.javapatterns.proxy 代理模式 com.javapatterns.proxy.smartproxy 专题:智能引用代理 com.javapatterns.proxy.imageloader 专题:虚拟代理的例子 ...
4. 原始模型模式(Prototype Pattern): 原型模式也属于创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化新的类。这种方法可以提高性能,特别是在创建对象非常耗时或者需要大量初始化工作时。 ...
4. 原始模型模式(Prototype): 原始模型模式通过克隆已有对象来创建新对象,简化了对象的创建过程。客户端可以要求一个原型对象克隆自身,以得到与原型相同或相似的新对象,而无需知道具体实现细节。 5. 单例...
- **原始模型模式(Prototype模式)**:原型模式通过复制已有对象来创建新对象,避免了直接构造新对象的复杂性。比如,收集一些情话并复制到聊天软件中,就可以快速发送给不同的对象。 - **单例模式**:单例模式...
原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...
4. 原始模型模式(Prototype):原型模式是另一种创建型模式,它通过克隆现有的对象来创建新的对象。这种方法减少了创建新对象的开销,特别是当对象创建过程复杂时。原型模式允许动态地增加或减少产品类,对产品类的...
1.1.4. Prototype—原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。例如,我搜集了好多肉麻的情话,可以用来和MM聊天。 1.1.5. Singleton—...
<br>第一部份、UML和模式介绍 com.javapatterns.uml 统一建模语言UML介绍... com.javapatterns.prototype 原始模型模式 com.javapatterns.serializable 专题:JavaBean的“冷藏”和“解冻”
4. 原始模型模式(Prototype):原型模式通过复制已有对象创建新对象,减少了创建新对象的成本。如例子中,将肉麻情话保存为原型,需要时直接复制到聊天工具中。 5. 单例模式(Singleton):单例模式确保一个类只有...
4. 原始模型模式(Prototype模式):允许通过复制已有对象来创建新对象,而无需知道对象的创建细节。这种方式在需要动态增加或减少产品类时特别有用,且无需关心产品的等级结构。 5. 单例模式:保证一个类只有一个...
- 原始模型模式(Prototype):通过复制已有对象来创建新对象,避免了重复的初始化过程。 - 单例模式:保证一个类只有一个实例,并提供全局访问点,通常用于管理共享资源或全局配置。 2. 结构模式:关注如何组织...
Java原型模型(Prototype)是设计模式中的一种,主要用于对象的克隆操作,它允许我们创建对象的副本,而无需知道具体实现的细节。这个模式基于Java语言中的`Cloneable`接口和`clone()`方法,使得我们可以高效地复制...