做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) 这样的语句啦,因为我们不确定用哪个呀,于是我们就需要定义接口,然后使用到工厂模式。这样我们的登录程序就变得兼容了呀。所以面向对象其实就在于我们是不是能够看出变化点,看出了然后去设计出来的程序就是面向对象的维护性高的程序。

转载于:https://www.cnblogs.com/xianhong/archive/2011/04/12/2014289.html

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

  1. java web mvc_构建Java Web应用程序时遵循MVC的三个步骤

    java web mvc 第1步 做 始终通过servlet / action bean处理URL(POST表单,单击链接等),而不是通过JSP处理 为什么 ActionBeans(无论某些框架调用那 ...

  2. 构建Java Web应用程序时遵循MVC的三个步骤

    步骤1 做 始终通过servlet / action bean处理URL(POST表单,单击链接等),而不是通过JSP处理 为什么 ActionBeans(无论某些框架调用那些类),而servlet很 ...

  3. wav文件 服务器失败,.wav存储在服务器上的声音文件在加载web应用程序时无法播放...

    这是我试图实现的场景:与Web应用程序存储在同一服务器上的声音,在客户端遇到条件时播放.当我在IDE中运行它并将webconfig更改为指向数据库所在的服务器时,它完美地工作.但是,当我部署并通过浏览 ...

  4. 用php web编程作业,代做CSE2ISD作业、代做Web,php程序作业、代写Java/web编程作业、代写C/C++/Java留学生作业...

    代做CSE2ISD作业.代做Web,php程序作业.代写Java/web编程作业.代写C/C++/Java留学生作业 日期:2018-10-08 10:00 CSE2ISD – Information ...

  5. 发布Web应用程序时发生的“xx.aspx.cs文件不存在”错误

    (注意:这里说的Web应用程序并不是Web网站) 在VS里调试.IIS里浏览含.CS源码的项目都是没有问题的.但是发布后,所有的.CS文件都被编译到bin文件夹里去了.在IIS里浏览,发生" ...

  6. jmetter持续时间_【转】Jmeter做web压力测试时设置持续时间注意点

    头一回使用jmeter做web的压力测试,遇到个很莫名其妙的问题,不管我的线程组怎么设置,它就是执行一次就结束了. 设置循环次数为300,不使用调度器--〉执行一次就结束了,循环次数未生效 设置循环次 ...

  7. Jboss AS 7 部署web应用程序时无法初始化spring的bean的解决办法

    Jboss AS 7 在部署web应用程序的时候无法初始化spring的bean(在tomcat下边不会出现这个问题) 原因是web应用程序没有导入jboss对spring的支持的jar包 解决方法: ...

  8. python编写应用程序错误_运行简单的Python Flask web应用程序时出错

    嗨,伙计们,我在运行烧瓶代码时出错了.我在做Udemy的课程(python mega课程): 下列过帐代码和错误: 代码: 从烧瓶导入烧瓶,呈现模板app=Flask(__name__) @app.r ...

  9. python .net web开发对比_Python与C#/.NET——在使用Python开发大型web应用程序时,需要考虑哪些关键区别?...

    ".NET"不是一种语言.也许是Python vs.C#,或者Python/Django vs.C#/ASP.NET(或者选择任何你想要的"网络作品":Pyth ...

最新文章

  1. Activiti——工作流之流程实例、任务的执行(五)
  2. 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一1.1 生成执行计划
  3. 「模型解读」从2D卷积到3D卷积,都有什么不一样
  4. Opengl-光照章节学习成果
  5. LAMP+LNMP(四)PHP安装实践
  6. mybatis-plus sql注入原理
  7. WinXP利用无线网卡做AP共享上网
  8. JS 屏蔽按键效果和改变按键效果
  9. GBDT算法(最简单)
  10. Gartner首发中国数据库市场指南,巨杉数据库代表数据库领域厂商入选
  11. python调用库实现dwg批量转pdf_如何对PDF进行批量转换成CAD
  12. 2017北航计算机系学硕最低录取分,2018北航计算机考研初试经验帖
  13. 校内计算机无法报名高考,没有奖项可以报名自主招生吗?报考条件建议65问
  14. 《人类简史》《未来简史》读后感作文5000字
  15. 一个清华保送生妈妈对竞赛的感受,自主招生家长都要看看!
  16. “百度杯”CTF比赛 十月场 writeup
  17. 【python小作业】编写函数,接收一个任意字符串,返回其中最长的数字字串。要求使用正则表达式。
  18. 大数据东风下,Clickhouse这坨屎是怎么上天的
  19. 新华网:数字藏品“加速器” 助力非遗传古通今
  20. 在其他国家被揭穿骗子又盯上非洲? 这几个骗子公司可把非洲人民坑苦了……...

热门文章

  1. React系列——React Fiber 架构介绍资料汇总(翻译+中文资料)
  2. linux图片处理工具GraphicsMagick安装使用
  3. Centos 6.4 KVM安装和配置
  4. 融合存储超越统一存储
  5. windows c++版faster-rcnn
  6. Linux下的iscsi(设备的共享服务)
  7. NVIDIA SMI 无法与 nvidia driver 通信
  8. 基于Arweave的文件同步应用ArDrive完成160万美元融资
  9. SAP License:赛锐信息访谈启示录(五)
  10. SAP License:SAP顾问你的路在何方?