您的位置:首页 > 其它

创建型模式之单件模式

2005-08-09 11:06 260 查看
先看这段vb.net代码:

如果要控制实例被创建的个数,比如要求只能建立3个该类的实例,就很简单了,把New()方法修改一下,像这样:

using System;

namespace WindowsApplication7
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication7

关于Shared和static的用法:

C# 所有的程式碼都要存放在 Class,VB.NET 持續支援標準模組。定義在標準模組的函數和變數會在 assembly 中以 global 的方式呈現。標準模組是與 CLS 相容的,C# 無法定義這一點。

C# 和 VB.NET 都在 Class 支援靜態方法、屬性和 fields(在 VB.NET 稱為 Shared)。它們在使用時不需真正建立物件,例如

class AClass

則呼叫 StaticMethod 只需要

AClass.StaticMethod();

在 C# 呼叫靜態方法只能透過 type 名稱,在 VB.NET 則同時可以利用 type 名稱或是物件的 instance 來呼叫,範例如下

Class AClass

Public Shared Sub ShareMethod()

Console.WriteLine("可以不建立物件來呼叫函數")

End Sub

End Class

可以透過以下兩種的程式碼使用

AClass.ShareMethod()

Dim a As New AClass()

a.ShareMethod()

這變成是哲理性的考量了,C# 提供了紀律:如果你想要建立與物件無關但以函數組成的函式庫(library),你必須建立 Class 來實際地將函數群組在一起,雖然你從來都不會為該 type 建立物件。由於所有的靜態成員仍需以 type 名稱來存取,會強制要求程式設計師明確知道該成員的共享特色。

VB.NET 提供了開發人員更大的彈性。你可以為一般功能函數建立傳統的標準模組,它可以在不指定任何 class 或模組名稱下直接使用。你可以存取物件的 instance 的 shared 成員,但這有讓 shared 物件與 instance 物件混淆的危險。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: