分享

设计模式-原型模式

 丹枫无迹 2021-08-03

单例的基础上升级了一下,把对象从内存层面复制了一下,然后返回。是个新对象,但是又不是new出来的。

/// <summary>
/// 原型模式:单例的基础上升级了一下,把对象从内存层面复制了一下,然后返回
///    是个新对象,但是又不是new出来的
/// </summary>
public class Prototype
{
    /// <summary>
    /// 构造函数耗时耗资源
    /// </summary>
    private Prototype()
    {
        long lResult = 0;
        for (int i = 0; i < 10000000; i++)
        {
            lResult += i;
        }
        Thread.Sleep(2000);
        Console.WriteLine("{0}被构造一次", this.GetType().Name);
    }
    /// <summary>
    /// 3 全局唯一静态  重用这个变量
    /// </summary>
    private static volatile Prototype _Prototype = new Prototype();
    /// <summary>
    /// 2 公开的静态方法提供对象实例
    /// </summary>
    /// <returns></returns>
    public static Prototype CreateInstance()
    {
        Prototype prototype = (Prototype)_Prototype.MemberwiseClone();
        return prototype;
    }

    //既然是单例,大家用的是同一个对象,用的是同一个方法,那还会并发吗  还有线程安全问题吗?
    public int iTotal = 0;
    public void Show()
    {
        this.iTotal++;
    }

}

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多