کلاس زیر رو در نظر بگیرید:
public static class MyMessageBox
{
private static Form messageBox = new Form();
private static Label textLabel = new Label();
private static Button okButton = new Button();
private static int _Padding = 10;
public static int Padding
{
get { return _Padding; }
set { _Padding = value; }
}
private static Size _Size;
public static Size Size
{
get { return _Size; }
set { _Size = value; }
}
static MyMessageBox()
{
Padding = 10;
Size = new Size(300, 200);
messageBox.FormBorderStyle = FormBorderStyle.FixedSingle;
messageBox.MaximizeBox = false;
messageBox.MinimizeBox = false;
messageBox.ShowIcon = false;
messageBox.StartPosition = FormStartPosition.CenterParent;
textLabel.AutoSize = false;
textLabel.BorderStyle = BorderStyle.FixedSingle;
okButton.Text = "OK";
okButton.DialogResult = DialogResult.OK;
messageBox.Controls.AddRange(new Control[] { textLabel, okButton });
}
public static DialogResult Show(string text, string title)
{
messageBox.Size = Size;
textLabel.Location = new Point(Padding, Padding);
textLabel.Size = new Size(messageBox.ClientSize.Width - 2 * Padding, messageBox.ClientSize.Height - okButton.Height - 2 * Padding);
okButton.Location = new Point(messageBox.ClientSize.Width - okButton.Width - Padding, messageBox.ClientSize.Height - okButton.Height - Padding);
messageBox.Text = title;
textLabel.Text = text;
return messageBox.ShowDialog();
}
}
کلاس فوق یک کلاس استاتیک است که هیچ نمونه ای نمیشه از روی آن ساخت یا حتی از آن ارث بری کرد. برای استفاده از آن هم لازم نیست که شیئی از روی آن ساخته بشه. تمام اعضای آن هم باید Static باشد. دارای یک سازنده هم هست که این سازنده از قبل اجرا میشه و نیازی به صدا زدن این سازنده نیست، چون خودش (اتوماتیک) اجرا میشه.
مثلا برای استفاده از کلاس فوق:
MyMessageBox("HHHHHHHHHHHHHHHH", "Title");
کلاس MyMessageBox دارای خواص استاتیک هم هست مثل Size و Padding، قبل از صدا زدن متد Show میتوان این خواص را مقدار دهی کرد تا در نحوه نمایش MyMessageBox تاثیر گذار باشند، مثلا:
MyMessageBox.Size = new Size(400, 400);
MyMessageBox.Padding = 25;
MyMessageBox.Show("Hello to C# world.", "About");
Singleton Pattern هم تقریبا مثل همین هست با این تفاوت که میشه message box رو بصورت یک پارامتر به متدها هم پاس دارد، ولی با این حال فقط یک نمونه از آن وجود داشته باشه.