博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习笔记——Prototype原型模式
阅读量:4598 次
发布时间:2019-06-09

本文共 1127 字,大约阅读时间需要 3 分钟。

1、使用单例模式定义类的构造函数

2、将类的初始化改为克隆

2.1单例模式的类初始化

private static Student _Student =new Student();//这个是线程不安全的,只是为区分原型模式举例public static Student CreateInstanceSingleton(){  return _Student;}

 

2.2 原型模式类的初始化

private static StudentProperty _StudentProperty =new StudentProperty();//线程不安全,如果类的实例化需要更多的属性赋值,可以改为使用私有构造函数public static StudentProperty Clone(){  StudentProperty studentCopy = (StudentProperty)_StudentProperty.MemberwiseClone();//浅克隆  return studentCopy;}

3、类的初始化使用克隆方式

StudentProperty studentProperty1 = StudentProperty.Clone();            studentProperty1.Name = "后会无期";            studentProperty1.Id = 1;            studentProperty1.Now = DateTime.Now;

总结:

原型模式是为了解决单列模式初始化快,但是类的属性所有对象共用(相互覆盖)而使用的,克隆分为深克隆和浅克隆。浅克隆只能克隆值类型的属性,引用类型的变量依然会被相互覆盖,深克隆可以将引用类型的变量也复制一遍。

深克隆的其中一种实现方式是,使用将类及属性类加上[Serializable]标记,并在克隆的时候,序列化并反序列化复制

StudentProperty studentProperty3 = SerializeHelper.Derializable
(SerializeHelper.Serializable(studentProperty2));//借助序列化,实现深克隆 studentProperty3.Class.Name = "高级班";

又是一篇学习后过几天再总结的文章,你懂的,看看就好。当然原型模式是一种比较简单的设计模式,这篇文章应该没有总结错的地方

转载于:https://www.cnblogs.com/bamboo-zhang/p/9128879.html

你可能感兴趣的文章
Red Gate 破解
查看>>
JVM 调优工具
查看>>
SCTF 2014 pwn题目分析
查看>>
集合以及特殊集合
查看>>
USACO 2.2 Runaround Numbers
查看>>
利用 force index优化sql语句性能
查看>>
Matlab画图-非常具体,非常全面
查看>>
365. Water and Jug Problem
查看>>
SQL数据库数据检索top和distinct
查看>>
平衡搜索树--红黑树 RBTree
查看>>
sqlite驱动下载
查看>>
让IE6/IE7/IE8浏览器支持CSS3属性
查看>>
队列实现霍夫曼树
查看>>
【Java】图片高质量缩放类
查看>>
Python :类中设置默认属性并修改
查看>>
磁盘管理综合测试
查看>>
Unity3d Shader开发(三)Pass(Pass Tags,Name,BindChannels )
查看>>
UMLet
查看>>
从父控件移除控件
查看>>
calc()制作自适应布局
查看>>