锁定老帖子 主题:关于面向对象设计的疑问
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-04
引用 楼主说:
在面向对象设计中有两条重要原则: 1.代码高度重用,避免冗余代码 2.设计短小通用的方法。 这不是面向对象设计的原则.. 面向对象设计的基本原则, 像 SRP OCP LSP DIP ISP 等等 才算吧, 而设计模式就是这些基本原则的体现 引用 楼主说:
但是,在我们程序设计的时候却往往会发现表面上这两条是相矛盾的,比如对一张表设计查询方法时,需要对不同字段进行查询,而这样的方法大部分代码看起来是一样的,只是SQL有所不同 嘿, 用过spring 对 jdbc 的包装吗? 你会轻松很多, 正像你所说的,只有SQL不同,那么你几乎只要写 SQL语句. 引用 楼主说:
可以将DAO里面的方法设计为最短小的方法,而在service里面放置判断逻辑,action当然只是简单的调用service了。 是否什么WEB项目,都要采用 DAO 和 Service 这种方式吗? 我在项目中就很少用 很多个DAO , 我只用了一个 PersistenceService.. 对对象进行统一的序列化管理.. |
|
返回顶楼 | |
发表时间:2007-02-04
bencode 写道 引用 楼主说:
在面向对象设计中有两条重要原则: 1.代码高度重用,避免冗余代码 2.设计短小通用的方法。 这不是面向对象设计的原则..面向对象设计的基本原则, 像 SRP OCP LSP DIP ISP 等等 才算吧, 而设计模式就是这些基本原则的体现 对,面向对象的原则是信息隐藏之类的,而不是复用。 复用是面向对象的目的,而不是面向对象的内容。我们用面向对象思想只是用来更好的复用。 |
|
返回顶楼 | |
发表时间:2007-02-05
OOP说到底是为了业务逻辑的重用。为此,我们不断地抽象,不断地解耦。代码提炼到一定程度后,便可轻松适应多种View及数据存储的变化需求。好归好,必然要付出长久的劳动。
如果体系架构确定的话(如Web+DB),那就不必如此麻烦了,采用简单直接的方式才是最好的(如LAMP)。 |
|
返回顶楼 | |
发表时间:2007-03-18
lgx522 写道 OOP说到底是为了业务逻辑的重用。为此,我们不断地抽象,不断地解耦。代码提炼到一定程度后,便可轻松适应多种View及数据存储的变化需求。好归好,必然要付出长久的劳动。 说的和我同感!
如果体系架构确定的话(如Web+DB),那就不必如此麻烦了,采用简单直接的方式才是最好的(如LAMP)。 |
|
返回顶楼 | |
发表时间:2007-03-18
hermitte 写道 对,面向对象的原则是信息隐藏之类的,而不是复用。 复用是面向对象的目的,而不是面向对象的内容。我们用面向对象思想只是用来更好的复用。 还有,更简单而明确地设计系统。 |
|
返回顶楼 | |
发表时间:2007-03-19
在我看来,web应用程序,用面向对象就不太合适。面试对象比较适合于,大而负责,且需求变化不大的应用,个人应用程序就比较适合。而web应用,需求变化非常之快,用面向对象,会导致逻辑复杂,维护困难,而特别稳定和复杂的部分,如数据库连接应用,已经有了很好的开源库,拿来用即可。
在我看来,必须遵守的一条规则就是分层,简直是不变的真理。 |
|
返回顶楼 | |
发表时间:2007-03-19
向楼主推荐《重构》这本书。
|
|
返回顶楼 | |
发表时间:2007-03-19
freemanxm84 写道 在面向对象设计中有两条重要原则:一,代码高度重用,避免冗余代码。二,设计短小通用的方法。
这两条不是原则,这是运用oo设计能够达到的一个效果,并且不是最终效果,只是一个附带效果。 我有一篇文章谈了最基本的oo设计方式,希望对你有帮助:http://www.cnblogs.com/lane_cn/archive/2007/01/25/629731.html |
|
返回顶楼 | |
发表时间:2007-03-19
建议看一下 敏捷软件开发:原则、模式与实践 这本书,虽然不能说这就是准则,不过看过几遍后我的收益是很大的....
|
|
返回顶楼 | |
发表时间:2007-03-19
个人觉得OO真的不错!
我也是个学生,一开始设计一个系统的时候, 就是用Web那种流程在设计,也首先考虑到了数据库的设计, 但是后来发现这样太被动了,业务逻辑变得越来越复杂, 更可怕的是,有的逻辑由于一些设计上的失误,竟然无法重用! |
|
返回顶楼 | |