原型模式
在某些场景下,我们需要复制对象的时候可以采用这种方式,例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
主要解决:在运行期建立和删除原型。

代码如下。
using System;
namespace _05_Prototype
{
class Program
{
/// <summary>
/// 原型模式
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
ExamPaper xm = new ExamPaper();
xm.MyName = "小明";
xm.ShowPaper();
ExamPaper xb = xm.Clone();
xb.MyName = "小白";
xb.ShowPaper();
Console.WriteLine();
Console.WriteLine(xm.MyName);
Console.ReadKey();
}
}
class ExamPaper
{
//生成考试试卷
public string MyName { get; set; }
public ExamPaper()
{
//从题库查询100道题
}
public void ShowPaper()
{
//随机打乱顺序
Console.WriteLine("考生姓名:" + MyName);
Console.WriteLine("选择题...");
Console.WriteLine("填空题...");
Console.WriteLine("判断题...");
}
public ExamPaper Clone()
{
return (ExamPaper)this.MemberwiseClone(); //浅复制
}
}
}
其实里面的关键点就在于MemberwiseClone()方法,可以用浅拷贝的方式复制一个对象。
本文介绍了原型模式在对象复制中的应用,如何通过缓存和克隆技术减少数据库调用,提高效率。核心在于MemberwiseClone()方法实现浅复制。
1173

被折叠的 条评论
为什么被折叠?



