设计模式-原型模式

单例的基础上升级了一下,把对象从内存层面复制了一下,然后返回。是个新对象,但是又不是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++;
    }

}

 

posted @ 2019-09-19 16:00  冰乐  阅读(260)  评论(0编辑  收藏  举报