【设计模式】(四)原型
来源:互联网 发布:淘宝怎么申请二次售后 编辑:程序博客网 时间:2024/06/05 18:03
上文我们介绍了《【设计模式】(三)建造者》
本文将从以下方面(本质,应用场景,如何实现),介绍创建型之原型。
一. 本质
通过new产生一个对象需要非常繁琐的数据准备或访问权限,此时可以使用原型。
就是java中的克隆技术,以某个对象为原型,复制出新的对象。
优势:效率高(直接克隆,避免了重新执行构造过程步骤)
克隆类似于new,但不同于new。
new创建新的对象属性采用的是默认值。
克隆出的对象的属性完全和原型对象相同。新对象的改变不会影响原型对象。
二. 应用场景
很少单独出现,一般是和工厂方法模式一起出现,通过clone方法创建一个对象,然后工厂方法提供给调用者。
Spring中bean的创建实际就是两种:单例模式(搭配工厂模式)和原型模式。
JavaScript语言中,继承的实现方式
三. 如何实现?
Cloneable接口和clone方法(Object中)。Java提供了clone()方法实现了内存复制。
利用序列化和反序列化技术实现深克隆。
四. 效率测试
短时间内大量创建对象时,原型和new的效率测试
五. Demo演示
1. Cloneable接口和clone方法,实现浅复制!
1)Sheep.java
public class Sheep implements Cloneable {private String name;private Date birthday;@Overridepublic Object clone() throws CloneNotSupportedException {// 直接调用object的clone方法return super.clone();}}2)Client测试
public class Client {public static void main(String[] args) throws CloneNotSupportedException {Sheep sheep1 = new Sheep("喜羊羊", new Date(2015 - 10 - 1));Sheep sheep2 = (Sheep) sheep1.clone();sheep1.setName("懒洋洋");System.out.println("sheep1:" + sheep1);System.out.println("sheep2:" + sheep2);}}3)打印结果
0 0
- 【设计模式】(四)原型
- 设计模式四:原型模式
- C#设计模式(四)原型模式
- java设计模式(四)---原型模式
- C++ 设计模式(四)----原型模式
- C++设计模式[四]原型模式
- 设计模式系列之四:原型模式
- 四、设计模式之三-----原型模式
- JAVA设计模式之四:原型模式
- JAVA设计模式(四)----原型模式
- java设计模式总结四:原型模式
- 设计模式之四--Prototype(原型)
- php设计模式 四 (原型模式 迭代器模式)
- 设计模式(四)-原型模式(Prototype模式)
- 设计模式笔记--创建型模式之四--原型prototype
- 设计模式(四)之Prototype - 原型模式
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(四)原型模式Prototype(创建型)
- hdu-5489(2015网络赛合肥赛区)***
- 字节序--大端模式和小端模式
- 【设计模式】(二)工厂模式
- ViewPager与Fragment结合使用
- 【设计模式】(三)建造者
- 【设计模式】(四)原型
- ViewPager与ActionBar结合实现导航
- Android之旅(一):搭建Android开发环境
- 在同一个类中重载方法的互相调用
- 向过去的一切告一段落
- 剑指offer—替换空格
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
- Eclipse 常用快捷键
- ViewPager实现自动无限循环切换