当前位置:编程学习 > C#/ASP.NET >>

做.net bs开发三年了,有很多看来很浅显的东西还是一知半解,惭愧。。。希望星星们能够解答。


1.面向对象开发
这么长时间的开发,突然感觉自己做的项目没有一个是面向对象开发的,都是面向过程。因为在开发中根本就没有面向对象的思想。只是简单的麻木的把项目分成业务层、数据层、表示层和实体层。按照功能模块不同,创建不同的类。每一个功能,要创建三个类,一层对应一个,然后一级一级的调用。。。面向对象的思想何在?难道简单的封装调用就是吗?难道一个功能模块(例如:人员管理)就可以把它封装成一个类,就可以看作一个对象吗?
我的实体层最接近书本上的对象要求,比如人员实体。但是它里面仅仅包含了属性,没有任何操作。。。。
如何理解面向对象,并把它应用到项目中?苦恼。。。
2.面向接口开发
一位编程前辈曾经说过面向对象就是面向接口编程。很多都知道这句话吧,可能我说的不够准确,这个人的名字我也忘了,不过大致意思对就好了。这个对我来说更可笑,我知道这是前辈们总结出来的开发的至理名言,但是我在开发中从来没有用到过接口。我知道petshop里是使用接口编程的,它的一些特殊业务使得它使用接口更加的方便灵活,可是我们普通业务编程里用到的就很少了。希望高手指教。。。
3.设计模式
我也曾努力的使我的项目按照某种设计模式去开发,单点也好,工厂模式也好。很遗憾,我知道模式的意思,但是无法和现在的项目结合起来。。。也希望高手指教。怎样应用设计模式?
多散点分...呵呵.你们也不白来. --------------------编程问答-------------------- 占个位置 接分 --------------------编程问答-------------------- 不是星星的就不可以了吗? --------------------编程问答-------------------- lz比我强多了,最起码你有四个三角了 --------------------编程问答-------------------- 如果你在这里混久了你就会发现不是所有的星星都配的上星星的 --------------------编程问答-------------------- 这个问题估计sp1234能有些好的意见

自己只知道分层,但和设计模式结合的还不够 --------------------编程问答-------------------- 看得云里雾里的 --------------------编程问答-------------------- 你可以考虑换公司了... --------------------编程问答-------------------- 接分 --------------------编程问答-------------------- 这个知识全中国能说清楚的能有几个? --------------------编程问答-------------------- 看一下Duwamish,不要老在一种开发架构下转,不然有些东西没办法看得更清楚 --------------------编程问答-------------------- 这个东东难说哦,因为一个公司总有自己的项目经验积累.
面向对象的东西培养一个开发人员周期比较长,所以现在的单位能封装的就封装要么直接搞个中间件

到大公司更是这个样子,呵呵.
没啥技术含量 --------------------编程问答-------------------- 知识是逼出来的,经验是跳出来的,换个环境,可能有意想不到的惊喜。 --------------------编程问答-------------------- 不是星星的也可以阿 ,呵呵,csdn藏龙卧虎,我只希望能有个好的思路和答案... --------------------编程问答-------------------- 对于这些问题在这问没有什么意义,纸上得来终觉浅,绝知此事要躬行...只有和实际应用结合起来才能真正掌握并且有自己的见解... --------------------编程问答-------------------- 这个问题估计sp1234能有些好的意见

自己只知道分层,但和设计模式结合的还不够
=============================
不过估计sp1234说这个说的多也会烦了 呵呵
--------------------编程问答-------------------- 只有在项目中慢慢体会,没有什么标准
东西不能生搬硬套,模式也就是个参考价值 --------------------编程问答-------------------- 俺只知道不管是面向对象还是面向过程,其实质还是要提高代码的重用性,提高开发效率.这是根本. 而这个重用性不仅是源代码那种Ctrl+C+Ctrl+V的重用性,编译成目标代码以后也要可重用.
如果你三年时间做了很多重复工作的话,我认为你还是有必要研究一下如何封装. --------------------编程问答-------------------- 顶! --------------------编程问答-------------------- UI
BLL
DAL---IDAL
DALFactory

我们是这样定义的,虽然牺牲了些许性能,但是带来了很大的灵活性,从维护和升级都方便了不少.接口是用来规范化,就相当合同一样. --------------------编程问答-------------------- 深有感想,我们公司就是用的工厂模式,DEL(数据库对象),DAL(数据库操作),BLL(逻辑层),业务层。不管什么系统都是这样,很多代码重用都是ctrl+c和ctrl+v。对楼主所说的这些问题我也和您有一样的困惑。 --------------------编程问答-------------------- ctrl+c和ctrl+v ,这只是把这段代码重写一次而而已!!真正的重应该是只有代码中有相同的要求,都可以调用某一段代码封装而成的相应类或函数来处理,这样不存在ctrl+c和ctrl+v --------------------编程问答-------------------- ,,, --------------------编程问答-------------------- up --------------------编程问答-------------------- 云里雾里中 --------------------编程问答-------------------- 数据库开发就是如此,能完成项目就好。 --------------------编程问答-------------------- 其实在Model里面倒是可以用一点面向对象的方法。比如有一个实体A,还有一个实体B,那么如果A和B存在这某种关系,例如继承,那么实体B就可以直接继承A,而不用重复的去写A里面的一堆属性还有私有变量了,而且可以考虑构造函数的重载。如果你用.net2.0,那么泛型就要好好的学习,IList<T>这个可以好好的利用。觉得这个接口挺实用的。 --------------------编程问答-------------------- 现在这段时间在学习JAVA。。。
老实说,JAVA真的比.net上手要难的多。。搞了半年了,想自己搞个小项目都困难。。。。。

但是在学习JAVA的过程中,却真的对项目分层,设计模式要比以前在.net下学到的更多。。。
推荐你一个非常棒的网站www.javaeye.com

推荐你两本好书:^_^ 其它Martin的书都是好书
Martin Flow 《企业应用架构模式》,《重构》

--------------------编程问答-------------------- 就是,面试时都要求那么好,但用的时候却是另一回事 --------------------编程问答-------------------- 和楼主有同感啊!
也许基于数据库的开发就是这样,在我参加的j2ee的项目中也是这样,一个表一般对应一个class,class里面封装了一些方法 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 做.net bs开发2年了,接口很少用,设计模式只用过Singleton --------------------编程问答-------------------- 我也深有同感,web开发. --------------------编程问答-------------------- 工厂,各种各样的工厂,然后反转控制

一步步抽象,如此而已

建议不要再看PETSHOP了,那是玩具 --------------------编程问答-------------------- 能挣着钱就行了。 --------------------编程问答-------------------- 哈哈..当你的项目里存在大量涉及业务规则和分工比较明细时就觉得有必要用到了.我觉得你对面向对象和接口不怎么熟.. --------------------编程问答-------------------- 我也深有同感,web开发.
--------------------编程问答-------------------- 同样,久了啥都没了 COPY+拼凑=OK

--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 感觉和你差不过,友情帮顶。

顺路mark。 --------------------编程问答-------------------- 和楼主确有同感,其实大多数的时候我们用的都是基本功。但大多数人觉得好像不用点什么东西就显得不够高深,应骋的时候不说几个模式什么的人家就觉得你肤浅:(

现在应骋的人一来就讲这些,听着都烦了 --------------------编程问答-------------------- 学习来的... --------------------编程问答-------------------- http://community.csdn.net/Expert/topic/4961/4961406.xml?temp=.4990503
http://www.linuxgoo.com/2005/10-23/01392555172.html
http://community.csdn.net/Expert/topic/5126/5126336.xml?temp=.9824945
http://blog.csdn.net/crykeice/archive/2006/04/20/669925.aspx
http://community.csdn.net/Expert/TopicView3.asp?id=5522753

理论知识网上很多,除了多看经典的例子外,还应该多动手和多思考(扩展性,灵活性,重用性三大目标)。
建议你先去了解多态本质。
再去看看
C#高级编程
Java与设计模式
(在这里,先看懂->寻找类似情况->与其它模式比较->模式是否可以变化->实践中掌握->最后忘记固定模式)
[以三大目标为中心,找平衡点]
重构(非常重要,认真看吧)
--------------------编程问答-------------------- 1.面向对象开发
楼主,相信自己,你是理解的!就算真不理解也不重要。

2.面向接口开发
等你模式用得多了,接口自然就多起来了。或者说,需要重用的代码和需要频繁改动的代码多了,接口和模式自然就用得多了。

3.设计模式
像楼上有人说得那样,该换公司了。如果有机会在50人以上的大项目里工作,你会看到有些模式和接口不用,简直就是噩梦。不过,也像上边的星星说的,模式不用生搬硬套,很多时候环境限制会让你自己发明很多更新的模式。 --------------------编程问答-------------------- 同感同感! --------------------编程问答-------------------- james_hunter(辉) 
有理 --------------------编程问答-------------------- 多多学习,其实说出来很多人都很迷茫! --------------------编程问答-------------------- 偶做了还不到三个月,没有说的资格,顶一个得了 --------------------编程问答-------------------- 工作一年,不是星星,不妄加评价,正在尝试分层及面象对象接口。也有很多迷惑。等待星星。
--------------------编程问答-------------------- 不过有一点我觉得,千万不要让任何框架框死了,没有一个放四海之皆准的结构,有一些框架确实好,但是一到实际项目,就不可行了。不是假的,是真的不可行。 --------------------编程问答-------------------- 看来你快要升级了 --------------------编程问答-------------------- 看能接到分不 --------------------编程问答-------------------- 做了三年开发怎会没有OO的概念?没面向对象的思想做.net是寸步难行的。 --------------------编程问答-------------------- 关键对OO不是很理解...项目做是做了,却没有明显发现自身提高 --------------------编程问答-------------------- 我也想知道,确实。net里面很多性能我们一般都没有用到。 --------------------编程问答-------------------- 惭愧
我什么也不知道
这些年都学习日语了
唉 --------------------编程问答-------------------- 小项目发挥不出威力  反而累赘 
大项目做不了主  调配不了人力  
--------------------编程问答-------------------- 想过,没用过 --------------------编程问答-------------------- 楼上正解 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 感觉也是一样的郁闷
哎。。。
曾听有人说过.NET程序员容易把时间话在研究控件使用上
而JAVA程序员更多的时间用在架构上
难道果真如此??? --------------------编程问答-------------------- sp1234呢?就等着看他发言了。
目前.Net区真正能说出让人思考的回帖也就他了。 --------------------编程问答-------------------- UP一下. --------------------编程问答-------------------- ld_thinking(懒得想)

小项目发挥不出威力  反而累赘 
//用点小技巧还是能发挥威力的,比如上边有星星说的singelton.
大项目做不了主  调配不了人力  
//不需要作主,只要你的leader不是草包,项目UML图里边就有够学的东西。 --------------------编程问答-------------------- 实际开发与理论的距离有多大? --------------------编程问答-------------------- 大家不要都如此消极嘛!啥子好郁闷得,有人研究算法结构,有人研究系统构架,有人研究业务流程,我不觉得那样比其他的更高级。我觉得很幸运使用.net,让我有了更多的时间去YY象什么供应链啊,MRP啊什么的。而不是一头扎在软件开发里透不出起来……

曾听有人说过.NET程序员容易把时间话在研究控件使用上
而JAVA程序员更多的时间用在架构上
----------------------------------
我是觉得喜欢把时间花在控件上的人,作java还是在研究控件,而喜欢研究构架的人,作.net还是在用refactor来看控件构架…… --------------------编程问答-------------------- mark --------------------编程问答-------------------- 一个角的来学习接分 --------------------编程问答-------------------- 在我看来,面向对象的思想应是体现在最初的设计上,估计楼主是边开发边设计的
如果设计得好的话,很多bll的业务代码都是可以复用的 --------------------编程问答-------------------- 不知道整天在研究分层,设计模式的时候,大家的基础打得怎样? --------------------编程问答-------------------- UP --------------------编程问答-------------------- 进入一个 大点的公司 对于 架构的 学习 很重要. --------------------编程问答-------------------- 不知道lz是做设计的,还是实现代码的。

对于设计的人来说,对象一定是了然于心的。

对于实现代码的来说就不一定了。

设计是宏观的,面对大颗粒的。

实现代码的就必须注意细节的实现,时间长了就只见部分,不见整体。 --------------------编程问答-------------------- 比如武功,学的时候可以讲很多招式,但打起架来谁还讲招式?还不是想怎么打就怎么打?如果硬要招式,只怕反而不会打架。

编程也是如此。 --------------------编程问答-------------------- 1.只是简单的麻木的把项目分成业务层、数据层、表示层和实体层。按照功能模块不同,创建不同的类。
-----------------------
在1年前,做的几个项目都是按照LZ的样子写,感觉比上学时候的代码写的已经很好了,然后把这种也看成了定型的方式。就在1年前有了楼主的感想,尝试了很多,翻了很多SF上的开源项目,至今做项目还是为完成任务是目标,很少考虑的,项目的时间富余就可以多花点心思在上,仍没有摆脱:业务层、数据层、表示层和实体层的框框。。
2.面向接口开发
在开发里,几乎没有用到接口,当然做Remoting除外。只是在感觉需要的地方做个抽象类,用个继承。
3.设计模式
在很多项目里业务逻辑的不同,可能根本就涉及不到那多的模式。工厂、singelton比较普遍。
很多时候想,,那么多设计模式,,自己对这些还是不了解么?还是项目中的业务逻辑就用不到这样?但对于类似的项目,看看人家写的,再看看自己写的?有一种说不上的差距,不知道问题出在了那里。
--------------------编程问答-------------------- 面试的时候 人家问我 请你谈谈你对面向对象的理解...
我迷茫! --------------------编程问答-------------------- 你应该 做点大项目 --------------------编程问答-------------------- 我也和LZ一样处于迷惑中,不过我比较赞同lnwuyaowei(风可以追我)的观点
=======================================================================
比如武功,学的时候可以讲很多招式,但打起架来谁还讲招式?还不是想怎么打就怎么打?如果硬要招式,只怕反而不会打架。

编程也是如此。

--------------------编程问答-------------------- qinjingfeng() ( ) 信誉:100    Blog   加为好友  2007-05-14 21:52:02  得分: 0  
 
 
   面试的时候 人家问我 请你谈谈你对面向对象的理解...
我迷茫!
  
 
 



遇到这种人, 你就应该长篇大论(当然事先得有充足的语言材料), 把他的气势压下去, 让他感觉他在你面前就是一个小小小学生..小到不丁的学生, 然后OK了 --------------------编程问答-------------------- 顶!! --------------------编程问答-------------------- 遇到这种人, 你就应该长篇大论(当然事先得有充足的语言材料), 把他的气势压下去, 让他感觉他在你面前就是一个小小小学生..小到不丁的学生, 然后OK了



==================================================================




愿闻其详 --------------------编程问答-------------------- 其实设计模式,我们很多时候自己不知不觉用了。。。只是我们自己尚未发现而已。。。

不过,我个人也觉得。。。接触面向接口编程,确实很少。。。 --------------------编程问答-------------------- 和LZ有同感,可能真的要停下来去思考一下。如果仅仅只是为了项目而做项目,可能会让自己落伍。而大一点的项目又没有机会接触,实在是矛盾。

以前我也看过设计模式,就数量而言就有好几十个,头都大了,还不知道怎么应用。简单的三层模式来设计系统我觉得谈不上架构系统,系统构架技术是要在大量的项目中体会和学习的。特别是AJAX技术大量应用后,设计思路又有些变化。所以我认为,应该“跳出项目”来设计系统! --------------------编程问答-------------------- 马上就要学了,学了就告诉你!呵呵 --------------------编程问答-------------------- 好帖 --------------------编程问答-------------------- 1、面向对象与面向过程
看问题的角度不同而已(事务脚本,表模式与领域模式),简单容易理解方案就行,不一定非要面向对象不可,面向过程强调的是 How,而面向对象强调的是 what

2.面向接口
忘记在哪本书看到过,对象的继承是基于行为的,高度抽象的结果就产生了面向接口编程

3、设计模式
学习了设计模式才发现,解决问题的方法是有很多种,简单灵活应用广的那种可以称之为模式,不要拘泥于应用设计模式,而是深入去理解它们
举个实例吧,请假流程审批(填写请假申请单-->经理审批-->HR审批-->总裁审批),
1、同一个页面根据申请单审批状态出现不同的需要的填写内容,生成器模式等
2、填写结果会根据申请单审批状态做不同的审批处理,工厂模式,策略模式等

--------------------编程问答-------------------- 正好今天刚讲完什么是面向对象~~
不过看完这个帖子。。。又有点晕了 --------------------编程问答-------------------- 我也想知道 jf --------------------编程问答-------------------- 好像有专门 培训 这方面的 更深层的东西 你找你们公司商量 培训下 呵呵 --------------------编程问答-------------------- http://www.cnblogs.com/mail-ricklee
里面的.net框架不错 --------------------编程问答-------------------- 看问题的角度不同而已(事务脚本,表模式与领域模式),简单容易理解方案就行,不一定非要面向对象不可,面向过程强调的是 How,而面向对象强调的是 what
——————————————————————————————————————————
我认为这种说法应该修改为:面向过程强调只针对一些整数、浮点数、数组、过程等等成计算机的简单对象来强调How,也就是对业务对象的What根本还是稀里糊涂的时候来强调How;面向对象则强调所有的How都应该是针对用户分析和定义业务对象,而不是只看到一些计算机数值对象。 --------------------编程问答-------------------- 各种模式/框架,不是说为了用这种东西而用它

而是说,到了该用它的时候,你能够想起它并且正确运用它

如果为了用设计模式而用设计模式,就会困惑 --------------------编程问答-------------------- 呵呵~~晕~
--------------------编程问答-------------------- 呵呵~~晕~ --------------------编程问答-------------------- 去博客园混吧~ --------------------编程问答-------------------- 接分 

楼主对矛盾和本质的问题理解如此深奥
偶等小弟是不敢造次了  
听就是了 --------------------编程问答-------------------- sp1234(我喜欢不下雨的阴天)
我认为这种说法应该修改为:面向过程强调只针对一些整数、浮点数、数组、过程等等成计算机的简单对象来强调How,也就是对业务对象的What根本还是稀里糊涂的时候来强调How;面向对象则强调所有的How都应该是针对用户分析和定义业务对象,而不是只看到一些计算机数值对象。

-----------------------------------------------------------------------------------
不好意思,回答的太仓卒

面向过程体现的是一种基础的计算机事务出来方式 When(事件驱动) + How;
在很多面向过程开发中也有 What( 对象 ) 的引入,不过此对象可以解释为一种更好的函数组织方式,它能够清楚描述它提供的功能,却不能够很好描述它与其它对象的关系,特别是继承等方面;
面向对象在面向过程的基础上增加了对象的概念用以更好的组织与分类 How, When + What + How,至于面向对象的 What 可以说对面向过程对象的一种升级,由于加入了继承、友元等概念,它不但能够清楚描述它提供的功能,还能很好描述它与其它对象的关系,使之能够更接近现实世界中真实的对象。 --------------------编程问答-------------------- 不要被名词所迷惑,其实面向对象也好,设计模式也罢。都只是一种解决问题的思路罢了 --------------------编程问答-------------------- 个人意见--
 面向对象开发:理论上上面的大侠们已经说了不少。在我现在的项目团队里面,大家也讨论过这个问题,最后一致的意见是,对象是为了重用。离开重用,一切都是没有意义的。如果你的一个方法只是为了一个独立的功能,一个实体只是为了一个使用类调用。那么对象---纯属胡扯,没有意义的,对象是为了抽象化很多具有共同特征的类的集合而已。
面对接口:在开发中提供了多个人同时开发的可能。没有接口,那么多人同时开发几乎不可能。并且定义了接口,一旦以后实现方式有所改变。只要是使用接口的调用类的改动是很少的,并且可以在莫些时候屏蔽掉一些实现细节。比如逻辑层更本不用关心持久层是怎么访问数据库的,他所要的就是给持久层什么东西返回什么东西就可以了。在这种情况下,持久层使用接口暴露给持久层就可以了。而没必要公开自己的实现,并且再以后数据库变动了。或是由SQL变成了HIBERNATE的时候逻辑层不需要任何改动

设计模式----这个是很有用的,。比如工厂模式--(利用反射建立实现类返回接口类型。根据参数不同生成不同的类的实例),单例模式---建立消耗资源教多的时候的大对象等等。这个东西不能只看人家设计模式是怎么实现的。要去看人家的实际的例子。从中去体会使用的好处才行 --------------------编程问答-------------------- 先去看看UML和OOAD以及GRASP原则 --------------------编程问答-------------------- 识是逼出来的,经验是跳出来的,换个环境,可能有意想不到的惊喜。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,