今天,翻开《大话设计模式》的简单工厂模式,在探索的过程中获得了一些收获,深感面向对象思想的“力量”。但是看完这个模式后还是感觉有些晕头转向,无法真正地体会到其中的奥秘。也许这就想作者所言,看这本书有那么几个层次,而我可能则处于最低的那个层次吧!
我没有作者渊博的知识,但是可以和同志们分享一下今天我编的一个小程序,主要是讲一个复位键(还是《大话设计模式》中的小菜编出来的那个例子用在WinForm中,只不过添加了一个清空键即复位键)。
以往在很多时候我们编写程序的时候会使用到复位功能,单击一个按钮使得每一个TextBox中的内容清空。我常常所做的工作就是编写一个函数(严格来说应该是过程,没有返回值的函数称为过程-----《C语言的科学和艺术》),在这个函数中我经常写类似这样的代码:
private void Reset_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
...
TextBoxN.Text = "";
}
虽然写起来这些代码不用怎么费脑子,但是感觉这样真的挺累的;如果TextBox是个数组就可以通过遍历数组的方式清空Text属性了,可是我们的TextBox空间命名有并不是统一的,如何用数组的方式呢?这样的想法我很早就就有了,但是一直没有能够实现。通过对面向对象这几天的学习,我今天终于实现了我几年前的想法,呵呵,心里甭提多美了。我先把代码贴出来,再对其讲解,相信熟悉面向对象的朋友们一定都能够明白,但用没用过这样的方法就不清楚了,呵呵。如果有什么更好的想法,欢迎大家提出来啊!{
TextBox1.Text = "";
TextBox2.Text = "";
...
TextBoxN.Text = "";
}
private void Reset_Click(object sender, EventArgs e)
{
TextBox[] Temp={TextBox1,TextBox2,,TextBoxN};
foreach (TextBox Item in Temp)
{
Item.Text = "";
}
}
我是学习完继承之后,懂得了父类可以生成子类的对象之后明白的。这样说可能有些牵强。TextBox1,TextBox2等等其实都是TextBox对象,也可能是其他的继承TextBox的对象(这些对象可能是我们写的用户自定义控件),因此他们都可以被清空。这样写代码虽然多了一个foreach语句,但是减少了N-1个.Text=""啊!感觉很舒服,呵呵!
{
TextBox[] Temp={TextBox1,TextBox2,,TextBoxN};
foreach (TextBox Item in Temp)
{
Item.Text = "";
}
}