机房合作--简单封装
面向对象的编程的三大特色是:封装,继承。多态,面对一个项目有同样逻辑的反复代码时,封装就成了我们非常好的帮手。
【问题提出】
我们知道,在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作为參数传递。
【总结】
面向对象的编程,封装,继承。多态让代码变得方便简约,我们在不同的阶段进行编程都要时刻谨记这些编程思想。简约是我们不断追寻的话题。