Windows Form,可以说是微软在开发C/S架构上的一个很好的平台,不但可视化做的很好(这应该是微软的强项),而且所有的控件都是建立在面向对向的基础上的,主窗体是第一个对像,它上面的所有控件都是主窗体的一个字段。其实从这个角度看来是完全面向对象的,但在很多时候,我们都会跳出面向象,而是直观的当控件用。
给常用这个问题,Form1是主窗体,Form2是次窗体,也是在Form1中调用出Form2窗体,调用的时候在Form1中new出Form2,然后show出Form2的对象,这个很好理解,如果在Form1中访问Form2中的数据,或在Form2中访问Form1的数据,再加上,Form1和Form2是类,还有操作的时候是对对象的操作,这些就使整个逻辑,理解起来有点迷糊。如果放到面向对象中的话,是很好理解的,在Form1对象中访问Form2中的数据,就意为着,Form2中数据的访问级别是公有的,才可以访问。在Form2对象中如何访问Form1对象中的,因为Form2对象是在Form1中创建出来的,所以如果操作Form1中的数据,只有把Form1对象传到Form2中进行处理(而不是在Form2中new一个Form1对象来处理),如果看成类和对象,这个关系很好梳理。
还有一个方面,正因为WinForm把内部的控件都封装成一个一个对角,再加上,WinForm上的控件,用事件的机制来向应用户操作,这就给开发人员(特别是面向对象了解不是太深的人)一个误区,比如,单击一个按钮,去作一个操作,很习惯的一股脑把全部的代码写在事件订阅的方法内,因为这样来去看代码的时候,很直观的感觉,比如这个按钮是查找数据库,把代码写到当前方法内,一目了然,保存按钮,里面写的保存数据的代码,也很直观。在某种承度上,可我们去理解操作流程时,这种写法是更人性化,或更符合人的思维方式的。面向对象的特征是继承,封装,多态,不管那种特征,都能在增加代码的复用性。还有,在有较强的业务逻啊时,对数据的处理,不得不把它们看成一个对象来处理,这个时候,单纯的用事件订阅的方法来处理逻辑,就有点得不应手了,还有就是当处理流程比较大时,单个方法放大量代码,也是不可取的(当然,这不构成我们去评判软件优略的标准)。所以在做WinForm时,一定要设计开对象,对象来源于业务,对象的处理,变换也得靠面向对象的原则来实现,所以对象是建立在代码的认知的基础上的,故对象有时候也会偏离现实原形的。使程序更灵活,再更进一步灵活,就涉及到去很下功的去分离,聚合实体对象与代码协作之间的关系了。
本文转自桂素伟51CTO博客,原文链接: http://blog.51cto.com/axzxs/393415
,如需转载请自行联系原作者