机房合作--简单封装

来源:互联网 发布:cow数据库是什么 编辑:程序博客网 时间:2024/05/16 09:35

           面向对象的编程的三大特色是:封装,继承,多态,面对一个项目有相同逻辑的重复代码时,封装就成了我们很好的帮手。

【问题提出】

       我们知道,在C/S编程当中,UI文本框的设计需要注意很多方面:
            1.判断文本框是否为空
            2.限定文本框的长度(比如账号输入只允许11位)
            3.文本框设定最大值(其长度不能超过最大值)
            4.文本框限定输入的数字类型为数字或小数
      
       模板方法是在机房收费系统中针对组合查询中提出一种非常好的解决方法,它是继承,多态非常好的体现。在上一篇博客《机房重构--UI设计与单例思考》中提到可以使用一个大的模板作为所有窗体的父级窗体,这样可以让所有窗体大小,字体大小,背景等保持一致,避免了大量的重复工作。而且还突发奇想,将单例方法的实现也放到了父级窗体当中,本想着可以减少代码重复,可不曾想每一个子窗体都无法打开了,纠其原因,单例模式降低了程序的访问权限,父类被访问的时候,子类继承父类,属于同一级别,这样子类也将无法进行访问了。

【事件选择】

        针对以上文本框问题,也曾经在一篇博客:《 机房收费--模块应用:控件为空、全部清空、是否为数字》中提到,将这些方法进行封装,放到模块Moudle当中。
     
          先了解一下模块的基本应用:
                
               (1)一般用于存放公用的方法(function)或过程(sub),这些方法一般为静态方法
               (2)这些方法可以直接调用
               (3)模块无法继承,也不能实现接口
               (4)可以被组织到命名空间中,被外层方法调用

       窗体编程控件可以使用的事件有很多,这就需要我们根据实际需要来选择合理的事件类型;比如,判断文本框输入是否为数字,是否超过最大值等方法放到Keypress事件下就可以实现实时动态监测了;文本框不能为空等放到button_click事件下就可以了;文本框是否满足固定长度,则放到lostFocus事件下最合适。

      同时任然存在一个问题,如果大量文本框控件相应相同的KeyPress事件,岂不是要在每一个文本框的KeyPress事件里面都要添加相同的引用?是不是能够考虑将不同文本框的KeyPress事件进行封装?还有一种简单的方法,在keyPress事件实现的过程中这样实现:
  
 Private Sub txtCard_KeyPress(sender As Object, e As EventArgs) Handles txtCard.KeyPress,txtName.KeyPress,txtLevel.KeyPrss
        
        公共方法封装的时候,可以将sender和e作为参数传递。

【总结】

        面向对象的编程,封装,继承,多态让代码变得方便简约,我们在不同的阶段进行编程都要时刻谨记这些编程思想,简约是我们不断追寻的话题。

0 0
原创粉丝点击