欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式-原型模式

程序员文章站 2022-04-14 15:31:12
单例的基础上升级了一下,把对象从内存层面复制了一下,然后返回。是个新对象,但是又不是new出来的。 ......

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

}