亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

.NET c# 單體模式(Singleton)

2024-07-10 13:22:39
字體:
來源:轉載
供稿:網友
單體模式(Singleton)是經常為了保證應用程序操作某一全局對象,讓其保持一致而產生的對象,例如對文件的讀寫操作的鎖定,數據庫操作的時候的事務回滾,還有任務管理器操作,都是一單體模式讀取的。
  創建一個單體模式類,必須符合三個條件:
  1:私有構造函數(防止其他對象創建實例);
  2:一個單體類型的私有變量;
  3:靜態全局獲取接口

  下面我寫一個類,為了看是不是單體,就加了一個計數器,如果是同一個類,那么這個類的計數每次調用以后就應該自動加一,而不是重新建對象歸零:

  .NET c# 單體模式 

using System;
using System.Threading;
public class Singleton{ 
    private int ObjCount=0;
    private Singleton(){
        Console.WriteLine("創建對象");
    }
    private static Singleton objInstance = null;
    public static  Singleton getInstance() {
        if (objInstance==null) objInstance=new Singleton();

        return objInstance;
    }
    public void ShowCount(){
        ObjCount++;
        Console.WriteLine("單個對象被調用了{0}次",ObjCount);
    }
};


 然后我們來測試一下:
public class ConsoleTest{
    public static void Main(string[] args){
        Console.WriteLine("開始執行單體模式"); 
        for(int i=0;i<5;i++){
            Singleton.getInstance().ShowCount();
        }

        Console.ReadLine();
    }
};


我在這個Main里面執行了5次,看看輸出的結果:
開始執行單體模式
創建對象
單個對象被調用了1次
單個對象被調用了2次
單個對象被調用了3次
單個對象被調用了4次
單個對象被調用了5次
  在這里可以看出,每次都是使用的同一個對象,實現了單體。
  為了測試在多線程下面是否是單體,下面我寫了一個多線程測試的:
class ApartmentTest
{
    public static void RunMoreThread()
    {
        Thread newThread =  new Thread(new ThreadStart(ThreadSingleMethod));
        newThread.SetApartmentState(ApartmentState.MTA);
        Console.WriteLine("ThreadState: {0}, ApartmentState: {1},ManagedThreadId:{2}", newThread.ThreadState, newThread.GetApartmentState(),newThread.ManagedThreadId );
        newThread.Start();
    }

   public static void ThreadSingleMethod() {
        Singleton.getInstance().ShowCount();
    }
};


然后每次for循環執行ApartmentTest.RunMoreThread();
再看看輸出的結果:開始執行單體模式
ThreadState: Unstarted, ApartmentState: MTA,ManagedThreadId:3
創建對象
單個對象被調用了1次
ThreadState: Unstarted, ApartmentState: MTA,ManagedThreadId:4
單個對象被調用了2次
ThreadState: Unstarted, ApartmentState: MTA,ManagedThreadId:5
單個對象被調用了3次
ThreadState: Unstarted, ApartmentState: MTA,ManagedThreadId:6
單個對象被調用了4次
ThreadState: Unstarted, ApartmentState: MTA,ManagedThreadId:7
單個對象被調用了5次

根據ManagedThreadId,可以看出不同的線路訪問達到了單體,OK!

c#的單體模式介紹完畢;

下面是PHP 單體模式的代碼:
<?php

header("Content-Type: text/html; charset=utf-8");

class Singleton{ 
    private $ObjCount=0;
    private function __construct(){
        echo("創建對象<hr/>");
    }

    public static  function   getInstance() {
        static $objInstance = null;        
                  if ( $objInstance == null )
          $objInstance =  new Singleton();
        return $objInstance;

    }
    public function ShowCount(){
        $this->ObjCount++;
        echo("單個對象被調用了".$this->ObjCount.'次數<hr/>');
    }


};


for($i=0;$i<5;$i++)
    Singleton::getInstance()->ShowCount();
?>

請注意以上PHP代碼的私有靜態變量范圍,不要放在類主體。
執行結果:
創建對象
--------------------------------------------------------------------------------
單個對象被調用了1次數
--------------------------------------------------------------------------------
單個對象被調用了2次數
--------------------------------------------------------------------------------
單個對象被調用了3次數
--------------------------------------------------------------------------------
單個對象被調用了4次數
--------------------------------------------------------------------------------
單個對象被調用了5次數

下面我們再來看看Java版本的寫法:

單體模式 Java
class Singleton{ 
    private int ObjCount=0;
    private Singleton(){
        System.out.println("創建對象");
    }
    private static Singleton objInstance = null;
    public static  Singleton getInstance() {
        if (objInstance==null) objInstance=new Singleton();

        return objInstance;
    }
    public void ShowCount(){
        ObjCount++;
        System.out.println("單個對象被調用了"+ ObjCount +"次");
    }
};
class ConsoleTestSingleton{
    public static void main(String args[]){
        System.out.println("開始執行單體模式"); 
        for(int i=0;i<5;i++){
            Singleton.getInstance().ShowCount();
        }
    }
};
基本代碼與c#一致,執行結果:
開始執行單體模式
創建對象
單個對象被調用了1次
單個對象被調用了2次
單個對象被調用了3次
單個對象被調用了4次
單個對象被調用了5次

可以看出,也是完全的單體,只要記住開頭提到的三點,即可掌握該模式。
----------
1:今天L出差
2:昨天聚會,比較Happy
3:SL和Z都是手機Q網
4:無事之冬
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本午夜精品理论片a级appf发布| 最新中文字幕亚洲| 日韩国产欧美精品一区二区三区| 亚洲成人黄色网| 久久影视三级福利片| 亚洲直播在线一区| 中文字幕亚洲一区二区三区五十路| 精品久久久国产精品999| www.日韩.com| 国产亚洲一区二区精品| 久久久久久这里只有精品| 精品夜色国产国偷在线| 91在线观看免费观看| 色中色综合影院手机版在线观看| 亚洲aa中文字幕| 欧美精品久久一区二区| 国产91亚洲精品| 69久久夜色精品国产7777| 亚洲欧美中文在线视频| 国产999在线观看| 5566日本婷婷色中文字幕97| 奇米一区二区三区四区久久| 精品国模在线视频| 日韩精品免费一线在线观看| 日韩欧美中文免费| 亚洲视频在线观看网站| 国产精品99久久久久久白浆小说| 国产成人jvid在线播放| 在线精品国产欧美| 91香蕉嫩草神马影院在线观看| 久久精品久久久久| 美日韩精品免费观看视频| 国产精品福利小视频| 欧美激情一区二区三区在线视频观看| 欧美性猛交xxxx黑人猛交| 91精品久久久久久久久久久久久| 欧美激情精品久久久| 久久天堂电影网| 成人黄色在线播放| 欧美大片在线看免费观看| 欧美日韩亚洲系列| 久久噜噜噜精品国产亚洲综合| 亚洲欧美日韩在线一区| 91精品国产综合久久久久久蜜臀| 成人高清视频观看www| 欧美性色19p| 久久久久久久国产精品视频| 久久影院资源站| 欧美激情在线视频二区| 国产精品成熟老女人| 国产999精品| 国产成人精品网站| 欧美孕妇性xx| 国产美女高潮久久白浆| 92看片淫黄大片看国产片| 一区二区三区黄色| 国产精品美女久久久久久免费| 欧美激情久久久| 亚洲国产中文字幕久久网| 欧美成人精品三级在线观看| 美女精品久久久| 久久久久成人精品| 欧美精品中文字幕一区| 国产亚洲欧美日韩精品| 欧美午夜久久久| 日韩av最新在线观看| 亚洲缚视频在线观看| 亚洲天堂av在线免费| 亚洲丁香久久久| 9.1国产丝袜在线观看| 91精品国产九九九久久久亚洲| 亚洲黄色有码视频| 国产精品91久久久| 亚洲电影免费观看高清完整版在线观看| 国产精品av网站| 欧美亚洲视频在线观看| 国产欧美日韩精品专区| 伦理中文字幕亚洲| 欧美性做爰毛片| 91精品久久久久久久久不口人| 亚洲精品福利免费在线观看| 日韩综合视频在线观看| 亚洲综合中文字幕在线观看| 亚洲女人天堂色在线7777| 97人人爽人人喊人人模波多| 亚洲国内高清视频| 亚洲国产婷婷香蕉久久久久久| xxav国产精品美女主播| 国自在线精品视频| 亚洲自拍偷拍第一页| 欧美一级成年大片在线观看| 中文字幕亚洲欧美| 国产精品久久久久9999| 热99在线视频| 亚洲奶大毛多的老太婆| 欧美视频在线免费看| 亚洲高清av在线| 欧美天天综合色影久久精品| 在线亚洲欧美视频| 日本精品免费一区二区三区| 一区二区中文字幕| 欧美一区二区三区免费视| 性欧美办公室18xxxxhd| 亚洲一区第一页| 久久久精品国产| 日韩一级裸体免费视频| 欧美中文在线字幕| 一本色道久久88综合亚洲精品ⅰ| 蜜臀久久99精品久久久久久宅男| 精品美女久久久久久免费| 这里只有精品在线播放| 久久在线视频在线| 91精品国产91久久久久久| 日韩国产精品一区| 中文字幕成人精品久久不卡| 久久91亚洲精品中文字幕奶水| 九色成人免费视频| 日本午夜人人精品| 精品国产一区二区在线| 国产精品爱啪在线线免费观看| 欧美日韩美女视频| 欧美性做爰毛片| 国产精品亚发布| 国自产精品手机在线观看视频| 成人激情视频在线| 一区二区三区高清国产| 欧美成人性色生活仑片| 狠狠操狠狠色综合网| 96sao精品视频在线观看| 国产精品一区二区久久久| 美日韩精品免费视频| 成人精品久久av网站| 亚洲国产99精品国自产| 亚洲国模精品私拍| 国内精品久久久久久影视8| 欧美成人精品不卡视频在线观看| 96pao国产成视频永久免费| 久久精品一偷一偷国产| 亚洲精品网址在线观看| 中文字幕精品在线视频| 丰满岳妇乱一区二区三区| 国产精品自在线| 日韩小视频网址| 国产国语videosex另类| 国产精品777| 精品视频偷偷看在线观看| 九九热r在线视频精品| 国产精品高潮在线| 欧美午夜精品久久久久久浪潮| 国产精品444| 日韩电影在线观看永久视频免费网站| 亚洲成色www8888| 欧美精品少妇videofree| 亚洲精品v天堂中文字幕| 国内精品视频一区| 国产偷国产偷亚洲清高网站| 亚洲精品欧美日韩专区| 国产在线观看不卡| 国产日产欧美精品| 欧美怡红院视频一区二区三区| 亚洲午夜av电影| 久久免费视频这里只有精品| 45www国产精品网站| 黄色精品在线看|