【C#设计模式(5)——原型模式(Prototype Pattern)】

前言

C#设计模式(5)------原型模式(Prototype Pattern)

通过复制现在有对象来创造新的对象,简化了创建对象过程。

代码

csharp 复制代码
//原型接口
public interface IPrototype
{
    IPrototype Clone();
}
//文件管理类
public class FileManager: IPrototype
{
    private string fileName;
    public string FileName { get => fileName; set => fileName = value; }
    public FileManager(string fileNmae)
    {
        this.FileName = fileNmae;
    }
    public IPrototype Clone()
    {
        try
        {
            return (IPrototype)this.MemberwiseClone();
        }
        catch (System.Exception ex)
        {
            return null;
        }
    }
}

/*
 * 原型模式:Prototype Pattern
 */
internal class Program
{
    static void Main(string[] args)
    {
        FileManager prototype = new FileManager("新建文件");
        FileManager prototypeCopy = (FileManager)prototype.Clone();

        prototypeCopy.FileName = "新建文件-副本";

        Console.WriteLine($"hash[{prototype.GetHashCode()}],原文件名:{prototype.FileName}");
        Console.WriteLine($"hash[{prototypeCopy.GetHashCode()}],备份文件名:{prototypeCopy.FileName}");

        Console.ReadLine();
    }
}

运行结果

相关推荐
我是唐青枫14 小时前
C#.NET ObjectPool 深入解析:对象复用、池化策略与使用边界
c#·.net
aq553560015 小时前
Laravel2.x:被遗忘的PHP框架遗珠
开发语言·汇编·c#
光泽雨15 小时前
c#对object sender ,EventArgs e 的解释
开发语言·c#
Eiceblue15 小时前
C# 删除 PDF 页面:单页 / 多页批量删除技巧
前端·pdf·c#
神の愛15 小时前
js的深拷贝和浅拷贝?啥情况讲解下??底层堆栈空间??object.prototype.toString.call(),还有bind,的具体使用?
前端·javascript·原型模式
IT 行者16 小时前
软件设计模式会不会是制约大模型编程的障碍?
设计模式·ai编程
t***54416 小时前
还有哪些设计模式适合现代C++
开发语言·c++·设计模式
t***54416 小时前
如何在现代C++项目中有效应用这些设计模式
开发语言·c++·设计模式
1314lay_100717 小时前
Vue+C#根据配置文件实现动态构建查询条件和动态表格
javascript·vue.js·elementui·c#
贵慜_Derek17 小时前
我们能从 DeerFlow 学到哪些优秀的技术架构设计
人工智能·设计模式·架构