关于面向对象,设计模式等

始的时候,我们什么也没有,后来技术人员为了便于开发、维护、扩展、管理等,整出了面向对象、设计模式、还有越来越多的各种框架,工具、软件等。这一切都是为了更好的开发并且开发出更好的产品。

所有这些都不应该成为技术开发的羁绊。程序员应该利用一切可以利用的资源、因素,实现最优开发。(这里的最优开发,可以参考广告词“没有最好,只有更好”理解)

前段时间,偶所在公司ERP项目里需要一个供货商的下拉列表控件,默认显示常用的供应商,选择更多时可以查看全部,并且可以返回。之前用到过供用商列表,是用一个DropdownList实现的,在aspx.cs里实现DataSource的DataBind,很原始,连SourceID都是默认的DropdownList1。现在要开发这个控件,实现复用。如何开发?(在.Net下,using C#)

1,写一个ascx,在这个控件里实现供应商列表数据的绑定?2,给这个控件一个数据源DataSource,一个绑定方法Databind,一个事件OnSelect,在选择后触发,再加若干属性如Text、Value、Disable等,这样一来,它不仅可以可以做为供应商下拉列表使用,也可以用于其它类型的列表,看起来很不错。。。

最终我在现有项目的namespace下,加了一个DropdownList.cs,派生自.Net类库的DropdownList,在DataBind里实现供应商列表数据的绑定,并且自动绑定。这样做,数据与表现放在一起,似乎不合模式,不合规则。但是这样一来,1,使用方便,使用时可以和Label一样直接从Toolbar上拖下来,其它的都不用关心,可以用DropdownList1.SelectedText直接取值。2,对于旧代码,只要用
< xxx:DropdownList Id = " DropdownList1 "  runat = " server " ></ xxx:DropdownList >

替换原有的
< asp:DropdownList Id = " DropdownList1 "  runat = " server " ></ asp:DropdownList >

就可以了,连SourceID都不用改,原代码里用Dropdownlist1.SelectValue,Dropdownlist1.SelectedItem.Text取值的代码也不需要修改,代码前后是兼容的。3,因为是编译过的控件,响应速度也明显优于ascx。4,开发时间大大缩短,实现起来也简单。5,以后如果修改的话,并不影响旧代码,也不影响在行开发。

当然ascx也有许多优点,比较开发起来像aspx一样,比较容易一些。控件布局和CSS样式也比较容易控制,可以方便的处理复杂的逻辑业务关系等等。所谓的方案和解决方法我都相信,是在一定条件下才是最合适的。换一个公司一个项目可能就不合适了。举这个例子只是为了表达我对如何面对设计模式以及如何使用设计模式的一点看法。

计算机的诞生还不算长,还不足以让某人说他祖辈三代都是搞计算机的。我们现在,特别在中国,可能就像革命前辈们当年八年抗战的时候,需要快速,敏捷。我们需要的是因地制宜,随机应变。

语言和工具都是次要的,最重要的是思想方法和思维方式。语言,无论是C#,Java,Perl等,都是相通的。做为程序员,面向对象是必须要学的,建议所有初学者从Flash学起,从ActionScript学起。

----------------------
补:
1,原始需求是这样的:需要一个列表控件,默认的时候显示前10位常用供应商的名字,尾部有一个"更多...",点击后变成"返回...",同时原来不显示的供应商也显示在列表中,这样设计,目的在于使下拉列表不太长,默认只加载和显示常用的选项。

2,如果学Flash5我想是不行的,5.0的ActionScript还不完善,MX版的时候AS已经像模像样了。到了后来的8.0的AS2.0,到现在的 9.0 Preview版的AS3.0,可以说,它已经很完善了,不知道Adobe下一步还怎么完善它,我们从它里面看到许多C#,Java等高级语言的特征。我甚至不反对把它列入高级语言之列,特别在试用了Flex2之后。

     学习面向对象,我建议从ActionScript学起,主要是我觉得 Flash的开发方式更容易培养面向对象的情愫。在Flash里,影片剪辑、按纽本身就是一个对象,我们可以在它里面写逻辑写代码,编特效等,然后在场景里使用它,重复的使用它。这种开发方式本来就是面向对象的。还有,Flash是分层次的(_level),每一个层次其实就是一个对象,时间轴也是对象。在时间轴里,第一贞声明的变量或者对象在第二贞可以访问,但第二贞的在第一贞不能访问,这就如同现实中,我们今天可以知道昨天的事情,但昨天不可能吃到今天才烤出来的面包。Flash有很强的“作用域”概念,在_root.MoveClip1里的变量A,在_root.MoveClip2里如果访问的话,可以以这种方式:_root.MoveClip1.A。等等。

      Flex基于Eclips,在Linux上也能使用。据说Adobe又打算把它开源,从这点说,让我等喜欢Flash的程序员更加喜欢它。

      建议读这篇日志的朋友都去体验一下Flex2(给Adobe免费做了一次广告).可以从Adobe官方网站上免费下载试用。国外有一个网站公开提供了Flex2的Serial

sban's .net blog(cnblogs)
sban's flex blog(flex5 blog system)
 

http://www.cnblogs.com/sban/archive/2007/05/27/761211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值