面向对象与动态网页布局的简单思考

  最近在写阳光网新版代码的时候,思考着曾经希望的动态布局的效果。具体就是对数据表中数据的显示能够在网页中动态地调整列序,即表格的个性化。

  此事若在以往的是比较容易实现的,可以通过sql的动态改动,或者在数据访问时就进行页面呈现,这两种方法均能轻易解决。

  但这样写的直接后果是代码混乱,数据库查询优化很难处理;而且对于此次的架构模型上,又细分了数据层、数据访问层、业务层、呈现层等,各层之间耦合性较低,如果采用前两种方法很有可能使代码层次混乱,不利于今后维护。

  同时,通过数据访问层所取得得均是实体对象。要在实体对象上更改属性的访问次序,显然是及其的困难。

  例如,内容类ContentInfo{title,content,author,date...},不同的使用者,可能有多种显示次序,对象在属性上的微观控制显然不是极其灵活,我们曾想通过反射机制实现,不过一听这方式就知此方案不能在系统中整体应用。

  对于此次系统,我们阳光网的几个人给系统加入了很多个性化的元素及操作,而几乎全是面向对象的设计思路又是我们值得高兴的东西;但某方面讲又不想破坏系统性能去实现某一个功能。为此,曾去掉linq的代码,自身实现对象的转换。

  此番可以说又是对象带来的一个问题。在最终的确定中,我们又放弃数据访问层获取对象的方式,改为可能获得DataTable。这样结合任何一个用户的配置信息。如,

  title,‘标题’,#FF0000,600px,true

  author,'作者,发布人',#FF0000,600px,true

  ...

  content,...

  结合DataTable['title']名称访问,等业务逻辑实现了个性定义显示列序以及是否显示等问题,而且可以全面使用的任意用户的个性化界面方案。

  同时,不能不思考一下实体对象的使用。

  面向对象,有时需要更灵活的使用方式。

  

posted @ 2009-03-03 22:56  王忠惠  阅读(315)  评论(0编辑  收藏  举报