设计模式学习笔记——Prototype原型模式

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<StudentProperty>(SerializeHelper.Serializable(studentProperty2));//借助序列化,实现深克隆
            studentProperty3.Class.Name = "高级班";

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值