zoukankan      html  css  js  c++  java
  • 【设计模式】单件模式 c#与c++实现

    单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享时的程序设计方法

       

    c# 实现:

    --------------------------------------------------------------------------

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

       

    //单件模式基础模型

    //来源:Gmap.net源代码中

    namespace Design.Singleton

    {

    /// <summary>

    /// generic for singletons

    /// 单件模式 泛型

    /// </summary>

    /// <typeparam name="T"></typeparam>

    public class Singleton<T> where T : new()

    {

    // ctor

    protected Singleton()

    {

    if (Instance != null)

    {

    throw (new Exception("You have tried to create a new singleton class where you should have instanced it. Replace your \"new class()\" with \"class.Instance\""));

    }

    }

       

    public static T Instance

    {

    get

    {

    return SingletonCreator.instance;

    }

    }

       

    class SingletonCreator

    {

    static SingletonCreator()

    {

       

    }

    internal static readonly T instance = new T();

    }

    }

    }

       

    c++实现

    ---------------------------------------------------------------------------------------------------------

    //来源 boost 1.48 boost\thread\detail\singleton.hpp

    //此非线程安全,线程安全使用 boost\serialization\singleton.hpp

    template <class T>

    class singleton : private T

    {

    private:

    singleton();

    ~singleton();

       

    public:

    static T &instance();

    };

       

       

    template <class T>

    inline singleton<T>::singleton()

    {

    /* no-op */

    }

       

    template <class T>

    inline singleton<T>::~singleton()

    {

    /* no-op */

    }

       

    template <class T>

    /*static*/ T &singleton<T>::instance()

    {

    // function-local static to force this to work correctly at static

    // initialization time.

    static singleton<T> s_oT;

    return(s_oT);

    }

       

  • 相关阅读:
    数据库查询语言(DQL)
    MySQL的约束
    MySQL的数据类型
    SQL
    MySQL简介
    个人项目网址
    Nexus Repository Manager(CVE-2020-10199/10204)漏洞分析及回显利用方法的简单讨论
    Joomla 3.0.0
    Groovy 反序列化漏洞分析(CVE-2015-3253)
    PHP反序列化漏洞新攻击面(BlackHat 2018)
  • 原文地址:https://www.cnblogs.com/ningth/p/2327370.html
Copyright © 2011-2022 走看看