C 單例類的實現

2022-08-26 23:30:21 字數 1334 閱讀 5715

單例類保證乙個類全域性僅有乙個例項,並提供乙個全域性訪問點,由於只能生成乙個例項,因此我們必須把建構函式設為私有函式以禁止他人建立例項。

該實現沒有額外開銷,不要求執行緒安全的情況下可以使用:

public class singleton1

public static singleton1 instance

return instance;}}

}

public class singleton2

public static singleton2 instance

}return instance;}}

}

寫法簡單,執行緒安全,但構造時機不是由程式設計師掌控的:

public class singleton3

public static singleton3 instance }

public static void test()

}

當.net執行時發現第一次使用singleton3時會建立單例的例項,而不是在第一次呼叫singleton3.instance屬性時建立,如進行以下操作:

singleton3.test();
在實現2的基礎上進行改進,只在第一次建立例項時加鎖,提高訪問效能:

public class singleton4

public static singleton4 instance}}

return instance;}}

}

在方法3的基礎上進行改進,確保只有訪問singleton5.instance屬性時才會構造例項:

public class singleton5

private singleton5()

public static singleton5 instance }

}

通過單例基類,我們可以簡單的通過繼承建立乙個單例類,實現**復用:

// 由於單例基類不能例項化,故設計為抽象類

public abstract class singletonwhere t : class

private static t instance = null;

public static t instance }

}

使用方法如下:

class testsingleton : singleton

}

1、《劍指offer》

2、3、

c 實現單例模式以及單例的派生類

單例模式 乙個類只用乙個物件,如果使用者建立多個物件需要返回錯誤,建構函式只能被訪問一次,不能給使用者隨便訪問建構函式的介面,即建構函式不能是public型別的。每個使用者在不知道這個類唯一例項的情況下都可以快速訪問這個物件。那麼就必須有乙個函式需要返回該例項,並且該函式可以不適用物件進行呼叫,那麼...

C 實現執行緒安全單例類

單例模式是一種非常常用的設計模式,幾乎在稍大的工程專案中都會用到。單例類保證在全域性中只有唯一乙個類的例項物件,並且在類的內部提供了獲取這個唯一例項的介面。在類中,例項化出乙個物件需要呼叫建構函式,為了防止在類的外部呼叫建構函式構造出例項,對類的建構函式就應有所限制,可以將建構函式的訪問許可權設定為...

C 單例類實現巨集定義

專案中單例類很多的話,每個都要宣告 回比較累贅,所以寫了乙個巨集定義簡介使用 巨集定義如下 define declare sington classname private classname classname classname const classname classname operato...