设计模式(5)-原型模式
来源:互联网 发布:html免费手机网站源码 编辑:程序博客网 时间:2024/05/16 18:27
简介
为什么要使用原型模式
用于创建重复的对象。当直接创建对象代价比较大时,使用此模式。
什么是原型模式
原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
类型
对象创建型模式
角色
角色
- Prototype,抽象原型类
- 声明克隆方法的接口。
- 是所有具体原型类的公共父类。
- 可以是抽象类也可以是接口,甚至还可以是具体实现类。
- ConcretePrototype,具体原型类
- Prototype的具体原型类。
- 实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。
- Client,客户类
- 通过调用该对象的克隆方法即可让一个原型对象克隆自身从而创建一个新的对象,得到多个相同的对象。
UML类图
实现
- 创建抽象原型类Prototype.java
- 创建具体原型类ConcretePrototype.java
- 创建测试类客户类Client.java
Prototype.java
interface Prototype { public Prototype clone();}
ConcretePrototype.java
class ConcretePrototype implements Prototype, Cloneable { public ConcretePrototype clone() { ConcretePrototype prototype = null; try { prototype = (ConcretePrototype) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return prototype; } public void show() { System.out.println("ConcretePrototype1:{}" + this.toString()); }}
测试类
Client.java
public class Client { public static void main(String[] args) { ConcretePrototype cp = new ConcretePrototype(); for (int i = 0; i < 5; i++) { ConcretePrototype clonecp = (ConcretePrototype) cp.clone(); clonecp.show(); } }}
测试
ConcretePrototype1:{}com.chinatvpay.prototype.ConcretePrototype@6bd46c20ConcretePrototype1:{}com.chinatvpay.prototype.ConcretePrototype@4706e02eConcretePrototype1:{}com.chinatvpay.prototype.ConcretePrototype@14681070ConcretePrototype1:{}com.chinatvpay.prototype.ConcretePrototype@3c0f3387ConcretePrototype1:{}com.chinatvpay.prototype.ConcretePrototype@a0002df
优缺点
优点
- 性能高。使用原型模式克隆对象比直接new一个对象性能高。
缺点
- 原型模式和单例模式是冲突的。
适用环境
- new一个对象时需要耗费很大的资源。
使用场景
待补充
问题
克隆出的对象和被克隆的对象有何不同?
内存地址是不同的。对克隆出的对象做修改不会对被克隆的对象产生任何影响。
在软件开发中,你在哪里用到了原型模式?
待补充。
创建型模式讲到这里就结束了,下一篇文章对最近所学的创建型模式做阶段性总结。
传送门:设计模式-创建型模式总结
阅读全文
0 0
- 设计模式(5)-原型模式
- java 设计模式原型模式(5)
- 设计模式(5):原型模式
- 设计模式(5)-原型模式(Prototype)
- 设计模式(5)------原型模式
- 设计模式(5)-原型模式
- golang设计模式(5)原型模式
- 设计模式5-原型模式
- <设计模式5>原型模式
- 设计模式5-原型模式
- 设计模式-原型设计模式(Prototype)
- 设计模式-原型设计模式(Prototype)
- 设计模式:6)原型设计模式
- 设计模式:原型模式
- 设计模式------原型模式
- 设计模式 原型模式
- 设计模式-【原型模式】
- 设计模式-原型模式
- MongoDB导入文件夹(内含json和bson文件)
- git操作指南
- Maven的概念及其配置方法
- 【Django】Django 模型 使用指南
- C语言-三天打鱼两天晒网
- 设计模式(5)-原型模式
- 02_libcurl
- Round 1 D
- CBUS转MQTT
- Material Design笔记
- 【洛谷2744 】【CJOJ1804】[USACO5.3]量取牛奶Milk Measuring
- application.properties 改成 application.yml
- Objective-C Blocks Under the Hood
- linux 常用操作符号