致曾经整过的"框架"
终于从一个焦油坑跳到了另一个焦油坑,今天是假期,利用今天的时光回忆一下当年的宏伟框架,
给大家增添一下节日的气氛。
背景
有一批桌面程序,上头想将其用自动化技术武装起来,减少重复的人力劳动。鼓掌,多么好的领悟
啊。于是,一个人(简称J)带着我们三个人开始框架。
1 没有M的MVC
为了让框架有正统的基因,得尽量朝着权威框架靠拢啊,就MVC吧。但是经典的是,没有M,就VC。M
的文件夹下面,永远是空的。我想这也可能是MVC的一种变种吧,没见过,继续埋头跟着干吧。
2 一static到底的V
不是一批桌面程序么,那得建立view层啊。但是最终的决定让人更瞠目结舌,一个界面一个window
,而且全静态,里面的field,property,method全静态!!!没有interface和baseclass,多么伟
大的设计啊!于是浩浩汤汤在view文件夹下面多了至少50+多个包含public static XXXwindow的文
件。一展开一大片,开心了,有工作量了。我斗胆的问了一句J,为什么全是static的呢?答曰:调
用简单,一个点全出来了。(他的意思应该是用类名.的形式就可以调用了,不用new等等,简单易
行)各位,多么痛的领悟啊,OO在J的眼里就是浮云。这里有一个坑,如果在多object的时候,这些
个view就不能instance化,也就是说不能出现有多window的case。好吧,一开始,没有,后来有,J
通过更加神奇的办法用static class实现了多个instance的调用情形。人不服不行!
3 是个玩意就弄个class
这些个window class里都有些什么恩?
public static class XXXWindow { private static Button xxxbutton; public static Button XXXButton { return xxxbutton; } }
实际窗体上有神马就创建神马,button啊,lable啊,textbox啊,radiobutton。 得实现简单的鼠
标操作,比如click,moveon等。
是呢,这么多操作怎么实现呢?放在哪呢?于是乎,
public staic class ClickableButton:Button { public static void Click(){...} public static void DoubleClick(){...} }
public static class XXXWindow { private static ClickableButton xxxbutton; public static ClickableButton XXXButton { return xxxbutton; } }
于是在view文件夹下有多了很多XXXClickable的class
隐约从J的口中得知,这样可以增大代码量,显得工作有成绩,领导看了开心。
4 不是办法的办法
有个video 的player,需要让他打开一些video的文件,然后看是否有问题。
J呢,很厉害。
先手动打开player,最大化,然后move cursor去click相应的位置。。。。。。
顿时泪流满面,顿时让微软的sendmessage无地自容。
于是这个办法成了潜规则
5 怎么通过static class XXXWindow来实现多个instance共存的case?
由于static class全局一份,于是乎有了下面的方法。
每个窗体不是有title吗,当然也是静态的。通过触发title的属性来重新初始化窗体的状态,其实就是在title的赋值的的属性里重新初始化窗体,那property的set当ctor用了。
于是,
XXXWindow1.Title=“A”;
。。。。。。A逻辑处理完毕
XXXWindow1.Title=“B”;
立马变身B窗体,华丽的变身?
其实还有很多骇人听闻的料,阐述起来太复杂。只是这样的框架后来还真搭起来了,一年的时间还没正式启用。由于内部奇怪的东西太多,在同样配置的机器上每天的结果还不同,就是这样,领导还坚信J的能力。据说J还是干driver dev出身的,我去。。。
罢了,睡觉去。