1. 程式人生 > >C#實現單列模式案列

C#實現單列模式案列

單列模式就是不能夠讓使用者建立多個物件

比如  Form  frm  =  new Form() ,Form  obj1 =  new   Form() ,這裡就建立了兩個Form類的物件

常用的單列模式的建立一般都是,私有化構造器,然後在類中提供公共方法來建立物件,實現單列模式。

用winform簡單實現更直觀

  public partial class Form2 : Form
    {
        private  static Form2 fm2 { set; get; }

        public static  Form2 getSingle() //提供方法建立物件
        {
            return fm2 == null ? fm2 = new Form2() : fm2; //返回類的物件,如果已經new了物件就直接返回,沒有在建立
        }
        private Form2() //私有化構造器
        {
            InitializeComponent();
        }
    }

Form2,私有化了構造器,提供了一個getSingle()方法來返回物件


    public partial class MainForm : Form
    {
        public MainForm()  {     InitializeComponent();      }

        private void MainForm_Load(object sender, EventArgs e) {}

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = Form2.getSingle();/
            f2.Show();
        }
    }
在MainForm中的  button1_Click()   方法通過Form2的getSingle(); 方法來建立Form2的物件 ,如圖

當第一次點選button1按鈕是,會建立Form2物件,只要Form2不關閉,在點選就不會建立Form2物件

如果通過直接new的方式建立物件,就是點選按鈕就會建立一個新的物件(窗體)。如下圖

所以用winfrom來實現單列更為直觀。