版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/yy763496668 https://blog.csdn.net/yy763496668/article/details/78216845
原型设计模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建的对象。其实就是小红一个对象再创建一个对象,而且不需要知道任何创建的细节
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 原型模式
{
/// <summary>
/// 深克隆
/// 重新构造对象 并把原有对象的所有信息赋值给新对象
/// 浅克隆
/// 只克隆原有对象的值类型,克隆引用类型的引用(新对象和原有对象引用类型地址一样)
/// </summary>
///
class Driver
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}
class Car:ICloneable
{
private float speed;
private Driver _driver;
public float Speed
{
get
{
return speed;
}
set
{
speed = value;
}
}
internal Driver Driver
{
get
{
return _driver;
}
set
{
_driver = value;
}
}
public object Clone()
{
//浅克隆
//浅克隆只能克隆对象中的值类型
//return this.MemberwiseClone();
//深克隆
Car car = new Car();
car.speed = speed;
car.Driver = new Driver();
car.Driver.Name = Driver.Name;
return car;
}
public void Move()
{
Console.WriteLine("{0}驾驶的汽车时速是:{1}",Driver.Name,Speed);
}
}
class Program
{
static void Main(string[] args)
{
Car car = new Car();
car.Speed = 5;
car.Driver = new Driver();
car.Driver.Name = "张三";
Car car2 = car.Clone() as Car;
car2.Driver.Name = "李四";
//car2.Speed = 15;
car.Move();
car2.Move();
}
}
}