最新评论
HappyQQ 2008-10-11 11:46
支持楼主的观点
OO虽好,但有她的缺点。
--引用--------------------------------------------------
mikel: 数据库是关系的
而语言是OO的,为何不让关系的归关系,OO的去OO呢?
LZ的问题也是普遍存在的滥用OO的问题,适合的才是最好的,没必要生拉硬套什么万事万物皆对象
--------------------------------------------------------
支持!
OO虽好,但有她的缺点。
--引用--------------------------------------------------
mikel: 数据库是关系的
而语言是OO的,为何不让关系的归关系,OO的去OO呢?
LZ的问题也是普遍存在的滥用OO的问题,适合的才是最好的,没必要生拉硬套什么万事万物皆对象
--------------------------------------------------------
支持!
mikel 2008-10-11 08:38
数据库是关系的
而语言是OO的,为何不让关系的归关系,OO的去OO呢?
LZ的问题也是普遍存在的滥用OO的问题,适合的才是最好的,没必要生拉硬套什么万事万物皆对象
而语言是OO的,为何不让关系的归关系,OO的去OO呢?
LZ的问题也是普遍存在的滥用OO的问题,适合的才是最好的,没必要生拉硬套什么万事万物皆对象
C+++ 2008-10-10 18:29
同意楼主!!
对象及其相关事务用OO来表示,没错!
而对于对象的选取就要用描述语言了
比如:
苹果是种对象,我要选好吃的苹果就要找红的,皮上有条纹的,这是对要选取的对象的描述语言,所以SQL和对象用于不用的方面,不要总想用O取代SQL,那是不可能的
对象及其相关事务用OO来表示,没错!
而对于对象的选取就要用描述语言了
比如:
苹果是种对象,我要选好吃的苹果就要找红的,皮上有条纹的,这是对要选取的对象的描述语言,所以SQL和对象用于不用的方面,不要总想用O取代SQL,那是不可能的
金色海洋(jyk) 2008-10-10 16:13
如果只是显示数据(包括统计、报表、汇总),那么写一个SQL语句(包括视图和存储过程),然后DataTable 一绑定就OK了。
JustForKim 2008-10-10 15:06
@金色海洋(jyk)
说得对,sql是非过程化的语言,但各类数据库开发商为了加入流程控制的元素而扩展了基本的sql,包括pl/sql、T_sql,这是通过Package、存储过程或函数来体现的。
@Gray Zhang
@金色海洋(jyk)
@飞林沙
感谢回复,加深了理解,完全的OO是不可取的。实际上,对象里的方法也是过程化执行的,重点在于如何决定对象的颗粒度。正如Gray Zhang所说的,OO化并不是说所有的逻辑都放在业务层中去处理,“表面化”、粗颗粒的OO也是一种选择。
说得对,sql是非过程化的语言,但各类数据库开发商为了加入流程控制的元素而扩展了基本的sql,包括pl/sql、T_sql,这是通过Package、存储过程或函数来体现的。
@Gray Zhang
@金色海洋(jyk)
@飞林沙
感谢回复,加深了理解,完全的OO是不可取的。实际上,对象里的方法也是过程化执行的,重点在于如何决定对象的颗粒度。正如Gray Zhang所说的,OO化并不是说所有的逻辑都放在业务层中去处理,“表面化”、粗颗粒的OO也是一种选择。
Atpking 2008-10-10 14:51
LINQ 下
Nhibernate
ORM 都是不错的选择
呵呵 关键还是要看复杂度
就为一个页面拼接字符串而使用Hibernate 确实不是很明治的做法
Nhibernate
ORM 都是不错的选择
呵呵 关键还是要看复杂度
就为一个页面拼接字符串而使用Hibernate 确实不是很明治的做法
飞林沙 2008-10-10 14:20
完全的OO必然会牺牲效率,而且对于一次性开发来说可能会影响一部分开发效率,他为的是一个长远的可维护和可复用。
所以,究竟是否OO,OO到什么程度,这是一个需要折中考虑的问题
所以,究竟是否OO,OO到什么程度,这是一个需要折中考虑的问题
金色海洋(jyk) 2008-10-10 12:44
SQL全称是“结构化查询语言(Structured Query Language)”
SQL(STructured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL同时也是数据库脚本文件的扩展名。
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。
摘自:http://baike.baidu.com/view/34.htm
T-SQL是Microsoft公司在关系型数据库管理系统SQL Server中的SQL-3标准的实现,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量,运算符,函数,流程控制和注释等语言元素,使得其功能更加强大.T-SQL对SQL Server 十分重要,SQL Server中使用图形界面能够完成的所有功能,都可以利用T-SQL来实现.使用T-SQL操作时,与SQL Server通信的所有应用程序都通过向服务器发送T-SQL语句来进行,而与应用程序的界面无关.
金色海洋(jyk) 2008-10-10 12:40
1、SQL好像不是“面向过程”吧,他是第五代语言。
2、你说的这个正好是OO的弱点,同时也是数据库(SQL)的长处。所以会有这样的结果。要知道数据库就是干这个的,OO嘛,像ls说的,做个“表面”处理就可以了。
2、你说的这个正好是OO的弱点,同时也是数据库(SQL)的长处。所以会有这样的结果。要知道数据库就是干这个的,OO嘛,像ls说的,做个“表面”处理就可以了。
Gray Zhang 2008-10-10 12:23
OO化并不是说所有的逻辑都放在业务层中去处理,定义一个方法,在方法中使用SQL,对外依旧返回对象列表,这样有什么问题吗
shawnliu 2008-08-09 02:51
strategy和template method还比较容易区分吧。
command和strategy的确比较难区分,他们的类图结构实际上很相似,简单点的command dp使用才会感觉难区分,复杂的command例如undo,redo等就很显然能够区分。对于难区分的状态就得靠自己体会了,你说的就是一种常见的状态区别。前面那个请求方法和算法实际上很难说出区别,算法可能也就是一个方法。后面多个和一个区别到是不错。所以总结一下command往往需要一个collection,例如list,arraylist,stack,queue等把command instances组织起来提供服务。
command和strategy的确比较难区分,他们的类图结构实际上很相似,简单点的command dp使用才会感觉难区分,复杂的command例如undo,redo等就很显然能够区分。对于难区分的状态就得靠自己体会了,你说的就是一种常见的状态区别。前面那个请求方法和算法实际上很难说出区别,算法可能也就是一个方法。后面多个和一个区别到是不错。所以总结一下command往往需要一个collection,例如list,arraylist,stack,queue等把command instances组织起来提供服务。

