设计模式 5/23 原型模式
2017-10-10 23:04
330 查看
原型模式,一个深入浅出,检验你对基础知识了解的是否透彻的一个设计模式。
之所以这样定义,因为我栽了个跟头
想要吃透原型模式,就得深入理解 浅拷贝,深拷贝
想要深入吃透 浅拷贝,深拷贝
我们就要对 值类型 和 引用类型 有较深的认识
如果对 值类型 和 引用类型 有了较深的认识,在GC也至少有一定的修为了
..........我还能继续这样写下去很多,所以有开头的那句话,原型模式,一个深入浅出,检验你对基础知识了解的是否透彻的一个设计模式。
对值类型 和 引用类型 的浅薄的 入门,可以参考 几年前写的 面试前的准备---C#知识点回顾----02
里面有一些基础知识的介绍,可以作为了解 浅拷贝 和 深拷贝的铺垫
重点来了,看黑板!!!
深拷贝:指的是拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。这样进行深拷贝后的拷贝对象就和源对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,你有一张光盘,你进行了多次刻录,产生了第二张,第三者光盘,那这三种光盘是相互独立的,第一张损坏或第二张损坏,都不会影响到第三张【光盘,会不会暴露年龄啊】。在.NET领域,值对象就是典型的例子,如int, Double以及结构体和枚举等。具体例子如下所示:
View Code
最终的结果
我在Enemy类中实现了接口ICloneable,大家可以试试用Clone方法会得到什么效果
总结下
优点:
用于创建重复的对象,同时又能保证性能,同时,我们还可以不用构造方法
缺点
1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。
2、逃避了构造函数的约束,如果我们的构造方法有约定,那因为可以不用到构造方法,所以我们逃避了约定
以上就是关于 原型模式 的分享
你们的支持是我写作的动力源泉,请不要吝啬你的点赞,谢谢
之所以这样定义,因为我栽了个跟头
想要吃透原型模式,就得深入理解 浅拷贝,深拷贝
想要深入吃透 浅拷贝,深拷贝
我们就要对 值类型 和 引用类型 有较深的认识
如果对 值类型 和 引用类型 有了较深的认识,在GC也至少有一定的修为了
..........我还能继续这样写下去很多,所以有开头的那句话,原型模式,一个深入浅出,检验你对基础知识了解的是否透彻的一个设计模式。
对值类型 和 引用类型 的浅薄的 入门,可以参考 几年前写的 面试前的准备---C#知识点回顾----02
里面有一些基础知识的介绍,可以作为了解 浅拷贝 和 深拷贝的铺垫
重点来了,看黑板!!!
深拷贝:指的是拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。这样进行深拷贝后的拷贝对象就和源对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,你有一张光盘,你进行了多次刻录,产生了第二张,第三者光盘,那这三种光盘是相互独立的,第一张损坏或第二张损坏,都不会影响到第三张【光盘,会不会暴露年龄啊】。在.NET领域,值对象就是典型的例子,如int, Double以及结构体和枚举等。具体例子如下所示:
static void Main() { Location seaTurtleLocation = new Location(2, 2); //大海龟出生 SeaTurtle bigSeaTurtle = new SeaTurtle(seaTurtleLocation, 10, 10); //照着大海龟 拷贝一个小海龟 A Enemy smallSeaTurtleA = (SeaTurtle)bigSeaTurtle.DeepClone(); smallSeaTurtleA.Location.X = seaTurtleLocation.X + 1; smallSeaTurtleA.Power = bigSeaTurtle.Power / 2; //再直接copy小海龟A 拷贝一个小海龟 B Enemy smallSeaTurtleB = (SeaTurtle)smallSeaTurtleA.DeepClone(); smallSeaTurtleB.Location.X = seaTurtleLocation.X - 1; bigSeaTurtle.Show(); smallSeaTurtleA.Show(); smallSeaTurtleB.Show(); Console.ReadLine(); }
View Code
最终的结果
我是海龟,攻击力:10,速度:10,出生点位:2,2 我是海龟,攻击力:5,速度:10,出生点位:3,2 我是海龟,攻击力:5,速度:10,出生点位:1,2
我在Enemy类中实现了接口ICloneable,大家可以试试用Clone方法会得到什么效果
总结下
优点:
用于创建重复的对象,同时又能保证性能,同时,我们还可以不用构造方法
缺点
1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。
2、逃避了构造函数的约束,如果我们的构造方法有约定,那因为可以不用到构造方法,所以我们逃避了约定
以上就是关于 原型模式 的分享
你们的支持是我写作的动力源泉,请不要吝啬你的点赞,谢谢
相关文章推荐
- java23中设计模式之原型模式
- 23设计模式之原型模式(Prototype)
- 23中设计模式之_原型模式(深/浅拷贝)
- 【GOF23设计模式】原型模式
- 23设计模式之原型模式(Prototype)
- 233_尚学堂_高淇_java300集最全视频教程_【GOF23设计模式】_原型模式_prototype_浅复制_深复制_反序列化实现深复制
- GOF 23 设计模式之 原型模式(prototype) 深复制与浅复制举例
- 设计模式 5/23 原型模式
- Android的开发之&java23中设计模式------>原型模式
- 23设计模式(5):原型模型
- 【GOF23设计模式】_原型模式JAVA233-234
- GOF23设计模式之原型模式之实现
- 设计模式笔记23:原型模式(Prototype Pattern)
- 大战设计模式【23】—— 原型模式
- 设计模式笔记23:原型模式(Prototype Pattern)
- 23 种设计模式
- 【设计模式 - 4】之原型模式(Prototype)
- 设计模式之原型模式
- Android常用设计模式——原型模式
- java设计模式——原型模式(Prototype Pattern)