文章目录
1.原型模式定义
复制已有对象, 而又无需使代码依赖它们所属的类。
2.UML图
3.实现方式
- 创建原型接口, 并在其中声明 克隆方法。 如果你已有类层次结构, 则只需在其所有类中添加该方法即可。
- 原型类必须另行定义一个以该类对象为参数的构造函数。 构造函数必须复制参数对象中的所有成员变量值到新建实体中。 如果你需要修改子类, 则必须调用父类构造函数, 让父类复制其私有成员变量值。
4.具体实现
4.1 接口方式
克隆类:
csharp
//年级
public class Grade
{
public int Stu_Grade { get; set; }
}
public class Student : IClone<Student>
{
public string Name { get; set; }
public int Age { get; set; }
public Grade Grade { get; set; }
public Student Clone<Student>()
{
return (Student)this.MemberwiseClone();
}
// 输出学生信息
public override string ToString()
{
return $"姓名:{Name},年龄:{Age},年级:{Grade.Stu_Grade}";
}
}
调用:
csharp
Student student = new Student()
{
Name = "ming",
Age = 18,
Grade = new Grade(){Stu_Grade = 6},
};
Student copyStu = student.Clone<Student>();
Console.WriteLine(copyStu.ToString());
结果:
姓名:ming,年龄:18,年级:6
4.2 类继承方式
原型模式在本质上就是得到拷贝一个类,因此可参考我的另一篇博文:
C# 深拷贝和浅拷贝