论坛首页 入门技术论坛

关于面向对象设计的疑问

浏览 7944 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-02-04  
引用
楼主说:

在面向对象设计中有两条重要原则:
1.代码高度重用,避免冗余代码
2.设计短小通用的方法。



这不是面向对象设计的原则..
面向对象设计的基本原则, 像 SRP OCP LSP DIP ISP 等等 才算吧, 而设计模式就是这些基本原则的体现

引用
楼主说:
但是,在我们程序设计的时候却往往会发现表面上这两条是相矛盾的,比如对一张表设计查询方法时,需要对不同字段进行查询,而这样的方法大部分代码看起来是一样的,只是SQL有所不同


嘿, 用过spring 对 jdbc 的包装吗? 你会轻松很多, 正像你所说的,只有SQL不同,那么你几乎只要写 SQL语句.

引用
楼主说:
可以将DAO里面的方法设计为最短小的方法,而在service里面放置判断逻辑,action当然只是简单的调用service了。


是否什么WEB项目,都要采用 DAO 和 Service 这种方式吗?

我在项目中就很少用 很多个DAO , 我只用了一个 PersistenceService.. 对对象进行统一的序列化管理..

0 请登录后投票
   发表时间:2007-02-04  
bencode 写道
引用
楼主说:

在面向对象设计中有两条重要原则:
1.代码高度重用,避免冗余代码
2.设计短小通用的方法。



这不是面向对象设计的原则..面向对象设计的基本原则, 像 SRP OCP LSP DIP ISP 等等 才算吧, 而设计模式就是这些基本原则的体现



对,面向对象的原则是信息隐藏之类的,而不是复用。

复用是面向对象的目的,而不是面向对象的内容。我们用面向对象思想只是用来更好的复用。

0 请登录后投票
   发表时间:2007-02-05  
OOP说到底是为了业务逻辑的重用。为此,我们不断地抽象,不断地解耦。代码提炼到一定程度后,便可轻松适应多种View及数据存储的变化需求。好归好,必然要付出长久的劳动。
如果体系架构确定的话(如Web+DB),那就不必如此麻烦了,采用简单直接的方式才是最好的(如LAMP)。
0 请登录后投票
   发表时间:2007-03-18  
lgx522 写道
OOP说到底是为了业务逻辑的重用。为此,我们不断地抽象,不断地解耦。代码提炼到一定程度后,便可轻松适应多种View及数据存储的变化需求。好归好,必然要付出长久的劳动。
如果体系架构确定的话(如Web+DB),那就不必如此麻烦了,采用简单直接的方式才是最好的(如LAMP)。
说的和我同感!
0 请登录后投票
   发表时间:2007-03-18  
hermitte 写道

对,面向对象的原则是信息隐藏之类的,而不是复用。

复用是面向对象的目的,而不是面向对象的内容。我们用面向对象思想只是用来更好的复用。



还有,更简单而明确地设计系统。
0 请登录后投票
   发表时间:2007-03-19  
  在我看来,web应用程序,用面向对象就不太合适。面试对象比较适合于,大而负责,且需求变化不大的应用,个人应用程序就比较适合。而web应用,需求变化非常之快,用面向对象,会导致逻辑复杂,维护困难,而特别稳定和复杂的部分,如数据库连接应用,已经有了很好的开源库,拿来用即可。
  在我看来,必须遵守的一条规则就是分层,简直是不变的真理。
0 请登录后投票
   发表时间:2007-03-19  
向楼主推荐《重构》这本书。
0 请登录后投票
   发表时间:2007-03-19  
freemanxm84 写道
在面向对象设计中有两条重要原则:一,代码高度重用,避免冗余代码。二,设计短小通用的方法。

这两条不是原则,这是运用oo设计能够达到的一个效果,并且不是最终效果,只是一个附带效果。
我有一篇文章谈了最基本的oo设计方式,希望对你有帮助:http://www.cnblogs.com/lane_cn/archive/2007/01/25/629731.html
0 请登录后投票
   发表时间:2007-03-19  
建议看一下 敏捷软件开发:原则、模式与实践  这本书,虽然不能说这就是准则,不过看过几遍后我的收益是很大的....
0 请登录后投票
   发表时间:2007-03-19  
个人觉得OO真的不错!
我也是个学生,一开始设计一个系统的时候,
就是用Web那种流程在设计,也首先考虑到了数据库的设计,
但是后来发现这样太被动了,业务逻辑变得越来越复杂,
更可怕的是,有的逻辑由于一些设计上的失误,竟然无法重用!
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics