做Web应用程序时应该如何面向对象杂谈

  做Web应用程序很多年了,却一直使用非常熟悉的方式,三层结构(Dal,bll,Web),可是仔细一想哪里有用到面向对象?貌似没有吧,顶多隔离业务和数据了。那么MVC呢,它其实也只是改变了我们编程的方式,准确的说是页面的处理方式,我们一样写dal,bll,web。可是有的时候却很想用用面向对象,可是思考许久却不知如何下手,不知道大家有没有有过类假的情景。

  做Web应用程序时,大多都是对数据的CRUD操作,所以相对Winform程序来说其逻辑更加简单,我们只需要操作数据前验证,然后操作数据库,最后告诉程序的使用者就可以了。所以我们还真难找到如何去面像对象,如果有的话,就是我们以前用DataSet,DataReader现在我们封装成List<T>了,这样的强类型更加便于我们操作而更不容易出错。可是当我们看了一些设计模式的书或者文章时,我们就又纠结了这些貌似和面向对象关第不大,就算有关系也只是一块边脚料吧。

 

  随着而来的就是去照葫芦画瓢了,我们先死板一下,为了面向对像而面向对像,因为我们还没到高手的境界可以随手拿来就用。所以先找一个功能,然后套用设计模式实现吧。google或者baidu一下,用上了设计模式的最典型的场景那肯定是数据库底层的多数据库兼容咯,就像PetShop一样,于是我们看到了工厂模式的应用。可以我们很多项目是不需要多数据库兼容的呀,于是这点学到了基本不会使用,除非有一天实在是有这种需要了,或者你想实现一个自己的数据库访问框架了(或者叫orm吧)。

   随着对面向对象的更加了解,我们发现其实重点不在于要怎么去面向对象,怎么去使用设计模式,而在于我们怎么达到高可维护性的时候我们就会从面向对象中获益,当我们思考以后怎么好维护的时候,我们就考虑到了哪块容易变化,我们是不是把它隔离出来呀,于是我们就去定义接口,传递委托,等等这些时候在我们的代码里就有了面向对象的影子了。随着我们编码经验的累加,慢慢的也对MS的类库比较熟悉,明白了MS的大牛们的设计用意,看出了里面的设计模式,这个时候我们就提升到一定境界了。

  貌似跑偏了,其实在Web应用程序中要面向对象还是面向对象中最重要的原则——开放封闭原则,只要随时想到这点,并努力去实现这点,我们的程序肯定就会慢慢的面向对象。慢慢的也会有设计模式在里面。比如我们要实现用户的登录,这样一个简单功能的时候,我们是不是考虑一下,到底是用Session,还是Cookie呀,如果需要同时都实现时,或者不确定是,我们应该怎么去设计。那么我们的程序里肯定不能老是出现 if(Session["userid"] != null) 这样的语句啦,因为我们不确定用哪个呀,于是我们就需要定义接口,然后使用到工厂模式。这样我们的登录程序就变得兼容了呀。所以面向对象其实就在于我们是不是能够看出变化点,看出了然后去设计出来的程序就是面向对象的维护性高的程序。

 

 

posted @ 2011-04-12 23:52  鲜宏  阅读(1852)  评论(6编辑  收藏  举报