设计模式学习--原型模式
来源:互联网 发布:微医集团怎么样 知乎 编辑:程序博客网 时间:2024/04/30 19:43
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
原型模式其实就是从一个对象在创建另外一个可定制的对象,而且不需要知道任何创建的细节.
类初始化需要消耗非常多的资源,这个资源包括数据,硬件资源等,通过原型拷贝避免这些消耗;
通过new产生一个对象需要非常繁琐的数据准备或访问权限,这是可以使用原型模式;
一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象共调用者使用,即保护性拷贝.
创建对象时,没new一次,都需要执行一次构造函数,如果构造函数的执行时间很长,那么多次执行这个初始化操作就实在是太低效了,一般在初始化的信息不发现变化的情况下,克隆是最好的办法,这既隐藏可对象创建的细节,又对性能是大大的提高.
原型模式的核心问题就是对原型对象进行拷贝,在这个模式使用过程中需要注意的一点就是,深,浅拷贝的问题.
浅复制:被复制对象的所有变量都含有与原来对象相同的引用,而所有的其他对象的引用都仍然指向原来的对象.
深复制:吧引用对象的变量指向复制多的新对象,而不是原有的被引用的对象.
原型模式本质上就是对象拷贝,与C++中的拷贝构造函数有些类似,他们之间容易出现的问题也都是深拷贝,浅拷贝. 使用原型模式可以解决构建复杂对象的资源消耗问题,能够在某些场景下提升创建对象的效率,还有一个重要的用途即使保护性拷贝,也即使某个对象对外可能是只读的,为了防止外部对这个只读对象修改,通常可以通过返回一个对象拷贝的形式实现只读的限制.
优点:原型模式是在内存中二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点,
缺点: 这个即使优点也是缺点,直接在内存中拷贝,构造函数不会执行,在实际开发中应该注意这个潜在的问题.
- 设计模式学习--原型
- 设计模式学习-----原型模式
- 设计模式学习--原型模式
- 设计模式学习--原型模式
- 学习设计模式-原型模式
- 学习设计模式-原型设计模式
- 设计模式学习--------10.原型模式学习
- 设计模式学习-Prototype(原型)
- 设计模式学习笔记之原型模式
- 设计模式学习----Prototype原型模式
- 设计模式学习笔记(原型模式)
- 设计模式入门学习 原型Prototype模式
- 设计模式之原型模式学习
- 设计模式学习笔记之原型模式
- 设计模式学习(五)原型模式
- 设计模式学习笔记(6)原型模式
- java设计模式学习笔记-原型模式
- 设计模式学习总结(5) 原型模式
- swift -区间运算符
- 第9周项目1(3)深复制的体验
- zoj3946 Highway Project
- iOS网络编程 - 5
- qt 控件属性修改
- 设计模式学习--原型模式
- Foundation => Objective-C _ Part1
- HDU 1212 Big Number 大数取模
- 蓝牙的简单应用
- hdoj 5670 Machine 【数学】
- gl.h文件错误(折腾了两天竟然是这个问题)
- 二维码使用原理
- Common Multiple and Least Common Multiple(LCM)
- The 13th Zhejiang Provincial Collegiate Programming Contest