1. 程式人生 > >單例模式(泛型類)

單例模式(泛型類)

 在專案開發過程中,經常會涉及到多個採用單例模式的類,對每個類都要進行單例的處理,甚是不爽。

下面使用泛型類解決了這個問題,只要簡單繼承就可以了,程式碼如下:

namespace LogHelper
{
    using System;

    /// <summary>
    /// generic for singletons
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class Singleton<T> where T : new()
    {
        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();
        }
    }
}




    
//繼承單例類
namespace LogHelper
{
    class HelperClass : Singleton<HelperClass>
    {
        public HelperClass() { }

        public double Add(double a, double b)
        {
            return a + b;
        }
    }
}

呼叫方法:

HelperClass.Instance.Add(1,2);

相關推薦

模式

 在專案開發過程中,經常會涉及到多個採用單例模式的類,對每個類都要進行單例的處理,甚是不爽。 下面使用泛型類解決了這個問題,只要簡單繼承就可以了,程式碼如下: namespace LogHelper { using System; /// <sum

【設計模式】—-1模式建立

概念:  java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裡主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。  單例模式有以下特點:  1、單例類只能有一個例項。  2、單例類必須自己建立自己的唯一例項。  3、單例類必須給所有其他物件提供這一例項。 

Java設計模式模式七種寫法

不一定 java設計 font method 防止 turn 無法 lazy 三種 Java設計模式之單例模式(七種寫法) 第一種,懶漢式,lazy初始化,線程不安全,多線程中無法工作: public class Singleton { private stati

設計模式模式執行緒安全

可以說單例模式是所有設計模式中最簡單的一種。 單例模式就是說系統中對於某類的只能有一個物件,不可能出來第二個 單例模式也是23種設計模式中在面試時少數幾個會要求寫程式碼的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。 1.多執行緒安全單例模式例項

C++的模式與執行緒安全模式懶漢/餓漢

單例模式 單例模式:是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個例項。即一個類只有一個物件例項。   實現簡單的單例模式:建構函式宣告為private或protect防止被外部函式

java模式執行緒安全

package cn.yang.test.controller; /**單例模式 * Created by Dev_yang on 2016/2/26. */ public class Singl

設計模式模式C++程式碼實現

1、單例模式: 單例模式:用來建立獨一無二的,只能夠有一個例項的物件。 單例模式的結構是設計模式中最簡單的,但是想要完全實現一個執行緒安全的單例模式還是有很多陷阱的。 2、應用場景: 共享資料或者共享訪問點; 建立一個物件需要消耗的資源過多,如訪問IO和

Java設計的模式三種寫法

最近在一些部落格上面看到的單例模式,無一例外都是餓漢和懶漢,這兩個確實是單例模式,但是各有自己的弊端 先上程式碼吧 //餓漢式 class ClassA{ private static final ClassA instance = new ClassA(); pub

C#模式定義

取自某熱門網遊 using System; public class Singleton<T> where T : class, new() { private static T _Instance; public static T Instance

模式java程式碼實現

應用單例模式時,類只能有一個物件例項,這麼做的目的是避免不一致狀態。 餓漢式單例:(立即載入) // 餓漢式單例 public class Singleton1 { // 指向自己例項的私有靜態引用,主動建立 private static Singlet

C#設計模式之一模式Singleton Pattern【創建

nal 設計 類庫 開發 避免 sum behavior 並且 負責 原文:C#設計模式之一單例模式(Singleton Pattern)【創建型】一、引言 看了李建忠老師的講的設計模式已經有一段時間了(這段時間大概有一年多了),自己還沒有寫過自己的、有關設計模

關於JAVA你必須知道的那些事模式和多

好吧,今天一定要把面向物件的最後一個特性:多型,給說完。不過我們先來聊一聊設計模式,因為它很重要。 設計模式 官方的解釋是,設計模式是:一套被反覆使用,多數人知曉的,經過分類編目,程式碼設計經驗的總結。說人話就是:軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。 常見的設計模式可以

名獲取的幾種方式及模式php語言

文章來自:原始碼線上https://www.shengli.me/php/343.html       1.__CLASS__:獲取當前的類名 2.get_class():返回物件的類名 3.get_called_class():後期靜態繫

Java設計模式-模式模式

餓漢式單例類 餓漢式單例類在載入時單例物件已經被建立。程式碼如下: /** * 懶漢式單例 * @Author: Rick * @Date: 2018/10/31 17:44 */ public class EagerSingleton { pr

java設計模式建立模式模式餓漢式,懶漢式,執行緒安全,雙重檢查

1.介紹     單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許一個例項存在。  2.實現思路與步驟   1).將該類的構造方法定義為私有方法,這樣其他處的程式碼就無法通過呼叫該類的構造方法來例項化該類的物件,只有通過該類提供的靜態

模式一個只能建立一個例項

三個步驟:①通過new一個靜態變數                   private static Single  single=new Single1();                   ②構造方法私有化                    private Si

模式封裝的logging庫的實現Python

import logging import sys def __singletion(cls): """ 單例模式的裝飾器函式 :param cls: 實體類 :return: 返回實體類物件 """ instances =

設計模式01 模式建立模式上,兩種推薦的實現方法

From Now On,Let us begin Design Patterns。 單例模式 定義 確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。 Ensure a classhas only one instance, an

設計模式01 模式建立模式下,懶漢模式和雙重檢查鎖

From Now On,Let us begin Design Patterns。 懶漢模式和雙重檢查鎖 這篇文章我們接著上一篇文章,繼續設計模式裡面的單例模式:這一篇我們要寫的是懶漢模式和雙重檢查加鎖的例項,我用我個人的程式設計經驗跟大家講述這個很有趣

建立模式模式2.1

單例模式定義 在軟體系統中,一個類只有一個例項物件。(該類只提供一個取得例項的靜態方法) 推薦使用的三種單例模式 DoubleCheck 靜態內部類 列舉 1.DoubleCheck 雙重檢查 特點:效率高,執行緒安全,延遲載入。 class DoubleCheck { private s