关于面向对象的讨论专题
> 案例分析:面向对象得失论 (双鱼座, 2007-11-04 16:22, 阅读:5534, 评论:32)

> 为什么无法面向对象 (RicCC, 2007-11-03 23:59, 阅读:3949, 评论:11)

> 外国人眼中的面向对象 (Nathan2008, 2007-11-03 20:28, 阅读:2429, 评论:13)

> 原来,面向对象和数据库是“冤家” (Nathan2008, 2007-11-03 13:11, 阅读:2428, 评论:17)

> 是什么限制了我们面向对象(的开发) (lovecherry, 2007-11-02 18:19, 阅读:4661, 评论:60)

> 分层模式下的Lazy Load ——探索Domain Model系列(下) (1-2-3, 2007-10-30 09:28, 阅读:4406, 评论:49)

> MapperRegistry 是工厂方法的变形? ——探索Domain Model系列(上) (1-2-3, 2007-10-15 08:54, 阅读:3583, 评论:78)

> 随笔:杂念纷呈 (寒枫天上, 2007-09-28 12:36, 阅读:3353, 评论:10)

> 别在领域模型迷失了自己 (小生, 2007-09-28 10:23, 阅读:4476, 评论:24)

> 重构图书馆惊魂夜(理解模型,关注设计) (亚历山大同志, 2007-09-28 00:22, 阅读:2826, 评论:25)

> 对最近讨论的看法 (RicCC, 2007-09-26 23:50, 阅读:2194, 评论:42)

> 没有银弹,但可以"扯蛋" (daizhj, 2007-09-26 10:45, 阅读:2316, 评论:57)

> 图书馆惊魂记之一(一个简单的领域模型的建立过程) (亚历山大同志, 2007-09-26 00:23, 阅读:2105, 评论:26)

> 领域模型﹐打开OO的另一扇窗 (小生, 2007-09-25 16:44, 阅读:4140, 评论:37)

> 为什么把持久化放到Domain Object是不OO的. (Klesh Wong, 2007-09-24 17:07, 阅读:1571, 评论:53)

> 贫血或职责的讨论 (怪怪, 2007-09-24 08:14, 阅读:232, 评论:0)

> 怪怪设计论闲谈篇:职责与解耦的矛盾 (怪怪, 2007-09-23 11:27, 阅读:3830, 评论:29)

> 关于OO的后现代争论几时休 (戏水, 2007-09-23 10:40, 阅读:1900, 评论:24)

> 开一个讨论,说说我封装的看法【初学者谨慎观看,未成年人请在家长监督下观看:)】 (亚历山大同志, 2007-09-23 01:41, 阅读:4667, 评论:11)

> 噢,这就是封装啊?! (Klesh Wong, 2007-09-22 10:12, 阅读:2236, 评论:46)

> 又见手把手系列-面向对象扫盲-通俗的OO第一弹-【封装】 (亚历山大同志, 2007-09-21 16:19, 阅读:4997, 评论:57)

> 煽风点火:也论Bjarne Stroustrup的"基于对象"的含义, 同时B4一下大师 (怪怪, 2007-09-21 15:04, 阅读:1766, 评论:39)

> 也乱弹Book.Save而引OO对话 (Kingthy, 2007-09-21 11:04, 阅读:2213, 评论:17)

> 我对oo的看法(对最近关于oo的认识) (黄金年代, 2007-09-20 10:14, 阅读:2489, 评论:13)

> 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码) (金色海洋(jyk), 2007-09-19 22:07, 阅读:2670, 评论:21)

> 软件设计基本原则 (deerchao, 2007-09-19 18:17, 阅读:3332, 评论:135)

> 谈谈book.Save()到底OO还是不够OO (亚历山大同志, 2007-09-19 18:07, 阅读:3078, 评论:41)

> 一个必须使用面向对象才能写出来的超简单的程序。为亚历山大助威 (徐少侠, 2007-09-19 17:28, 阅读:2965, 评论:35)

> 捅破窗户纸:如何从过程到对象—For金色的海洋以及所有为面向对象而困惑的Tx (亚历山大同志, 2007-09-19 15:50, 阅读:4447, 评论:39)

> 其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感 (金色海洋(jyk), 2007-09-18 21:36, 阅读:3552, 评论:55)

> 怪怪设计论: 抽象无处不在 (怪怪, 2007-09-17 01:30, 阅读:5578, 评论:53)

> 返回专题首页

阅读排行
· 怪怪设计论: 抽象无处不在 (5578)
· 案例分析:面向对象得失论 (5534)
· 又见手把手系列-面向对象扫盲-通俗的OO第一弹-【封装】 (4997)
· 开一个讨论,说说我封装的看法【初学者谨慎观看,未成年人请在家长监督下观看:)】 (4667)
· 是什么限制了我们面向对象(的开发) (4661)
· 别在领域模型迷失了自己 (4476)
· 捅破窗户纸:如何从过程到对象—For金色的海洋以及所有为面向对象而困惑的Tx (4447)
· 分层模式下的Lazy Load ——探索Domain Model系列(下) (4406)
· 领域模型﹐打开OO的另一扇窗 (4140)
· 为什么无法面向对象 (3949)
· 怪怪设计论闲谈篇:职责与解耦的矛盾 (3830)
· MapperRegistry 是工厂方法的变形? ——探索Domain Model系列(上) (3583)
· 其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感 (3552)
· 随笔:杂念纷呈 (3353)
· 软件设计基本原则 (3332)
· 谈谈book.Save()到底OO还是不够OO (3078)
· 一个必须使用面向对象才能写出来的超简单的程序。为亚历山大助威 (2965)
· 重构图书馆惊魂夜(理解模型,关注设计) (2826)
· 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码) (2670)
· 我对oo的看法(对最近关于oo的认识) (2489)

最新评论
> re: 怪怪设计论: 抽象无处不在
@mikelij
呃...,其实我这篇文章正是破除方法论迷信用的呀..., 看来是太罗嗦了..

技巧性的文章和入门基础知识, 不是我不愿意写, 是我太菜, 写不出来呀...

我虽然和你大体意见相仿, 不过呢, 务虚也不是全然无用, 至少现阶段人类的任何成果, 中间都离不开务虚这一步。

另外, 除非按照某些人在某领域内重新将他们定义之后的理解,否则抽象和方法论根本是两个概念,更不能说抽象是一种方法论了。

比如我这篇文章, 实际上是在说,不是某一种方法论的执行结果才是抽象; 当你随便打下一行代码,就是在抽象了了; 区别仅仅是有意识的还是无意识的, 好、还是不好罢了。
- 怪怪 2008-07-13 23:33

> re: 怪怪设计论: 抽象无处不在
以前没有看过怪怪的长篇大论。现在总算领教了。真是务虚的很。呵呵! 要我说就两句话:抽象是找出事物的共性, 同时也反衬出特性。 一种方法论而已。还是务实的好,建议怪怪多写点技巧性的文章或者入门基础知识的文章。
- mikelij 2008-07-13 22:31

> re: 分层模式下的Lazy Load ——探索Domain Model系列(下)
其实粗略看完了,其实没看懂啥。呵呵。
- Solog 2008-05-27 13:47

> re: MapperRegistry 是工厂方法的变形? ——探索Domain Model系列(上)
MapperRegistry 是简单工厂不是工厂方法的变形
工厂方法其实是简单工厂的加强版
抽象工厂又是工厂方法的加强版
一次比一次复杂,解决的问题也更大更好

lz说到后面变成简单工厂了,简单工厂可是违背了开放封闭原则啊,所以一般简单工厂要配合反射技术使用呵呵

- 私家侦探 2008-05-26 16:35

> re: 怪怪设计论: 抽象无处不在
拜读恨晚!
- alisx 2008-05-09 18:39

> re: 是什么限制了我们面向对象(的开发)
楼主有空能不能讲解下ado net entity framework和富领域模型啊,谢谢
- blue_paladin 2008-04-28 12:49

> re: 为什么把持久化放到Domain Object是不OO的.
--引用--------------------------------------------------
徐少侠: --引用--------------------------------------------------
金色海洋(jyk): 怎么没有人评论呢?
看来我一直都只在“以数据库为中心”呀,怪不得我总觉得实体类没有太大的用处呢,原来是这样呀。
--------------------------------------------------------
你老这么幸灾乐祸哦?

没吃过不OO的亏是啊?

因为业务变化,只要在修改自己的代码的时候,出现修改了2个及以上的地方
且这些修改,或者说这些地方的代码是完全一样的或者非常类似的.

那么你在这个地方已经吃了亏了

相同及类似代码在越多地方被重复编写,那么在未来的更改时OO的优势体现越大.

反之,你如果能使得整个项目里没有重复功能的代码,那么的确是不需要OO的.
因为OO带来的一个副作用就是首次编写时会降低开发效率以及编码复杂性(指难以让人理解)

--------------------------------------------------------

你说的这个"亏",我只吃了一会,以后再也不想吃了,所以呢,我现在的项目里“重复”的代码是很少的,复杂度不高的可以说是没有了。

最近正在整理项目,也许过几天可以发一下吧,到时候你就会知道了,我说的没有重复的代码是什么样子了,呵呵。


- 金色海洋(jyk) 2008-04-10 21:07

> re: 案例分析:面向对象得失论
http://www.cnblogs.com/coderlee/archive/2008/02/11/1066915.html

我写了一篇对多态和范型的感悟 可以来看看。。
- coderlee 2008-02-11 15:24

> re: 为什么无法面向对象
开心就好
- 古典小说 2008-01-30 01:26

> re: 分层模式下的Lazy Load ——探索Domain Model系列(下)
长见识了,还需要多学习一下阿
- 长见识了,还需要多学习一下阿 2008-01-30 01:23

> re: MapperRegistry 是工厂方法的变形? ——探索Domain Model系列(上)
学习了。
- dyh 2008-01-23 15:04

> re: 分层模式下的Lazy Load ——探索Domain Model系列(下)
很不错!谢谢楼主!不过我觉得楼主好像把DomainObject和DataMapper的上下弄错了。DomainObject应该是上层,DataMapper是下层。分离接口是为了把DomainObject对DataMapper的强依赖转变成弱的依赖。本来是domainobject依赖datamapper分离出接口就变成两者都依赖与抽象的接口。这是依赖倒置。因为抽象是上层!
- xhan 2008-01-18 16:37

> re: 其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感
1、在我看来 表名和字段名 本身就是业务逻辑的体现。

如果不使用表明和字段名的话,那么也要使用实体类(的名称)和实体类的属性,而大多数的做法都是有一个表就对应一个实体类(或者反过来说,有一个实体类就对应一个表),实体类的属性和字段也基本上是一一对应的。

这么来看,表名和字段名 VS 实体类名和实体类的属性,也就没有太大的区别了。

(当然我知道,在编译的时候表名、字段名写错了是不会出现提示的。)

2、出现了表名和字段名确实不便于修改,这确实是一个问题,但是我们可以想一个补救的措施,而不是全盘否定。

补救的措施就是把表明和字段名放在另一个地方。比如单独的.cs文件,或者配置文件(不是web.config,而是xml或者数据库)


解决方案有很多,目的就是

1、减少代码量;
2、便于修改
3、编译的时候能够发现表名、字段名是否合适据库里的一致。

- 金色海洋(jyk) 2008-01-01 10:16

> re: 其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感
虽然逻辑层里没有出现SQL语句,但是依然出现了表名和字段名。

真正的邏輯層應該不會出現"表名和字段名"吧.
- 清風客 2007-12-31 17:13

> re: 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)
看的不是很仔细,你可以看一下subsonic的脚手架功能
- lexus 2007-12-30 23:45

> re: MapperRegistry 是工厂方法的变形? ——探索Domain Model系列(上)
@ifire
非常感谢您的回复。
www.infoq.com/cn/上的那篇文章是不是这篇http://www.infoq.com/cn/articles/fine-grained-singleton-pattern
它的方法是使用如下的代码来判断是否是Web程序:
/// 判断当前应用是否为Web 应用的Helper 方法(非官方方法)
private static bool CheckWhetherIsWeb()
{
bool result = false;
AppDomain domain = AppDomain.CurrentDomain;
try
{
if (domain.ShadowCopyFiles)
result = (HttpContext.Current.GetType() != null);
}
catch (System.Exception){}
return result;
}

- 1-2-3 2007-12-29 16:07

> re: MapperRegistry 是工厂方法的变形? ——探索Domain Model系列(上)
--引用--------------------------------------------------
1-2-3: @caidehui
使用配置文件应该是一个不错的方法。

> 还有一个问题就是MapperRegistry在Web应用中使用时应该如何放置的问题,既然要使用缓存、那么就可以放到Session的缓存中。
单件类的实现方法一直在困扰着我。因为在Web程序中,单件类的实例应该保存在Session中;而在WinForm程序中,只要放在一个static field中即可。我一直没有找到一个统一的实现方法。难道要为Web程序和Win程序分别实现两个MapperRegistry?
--------------------------------------------------------

配置文件有什么好的?在配置文件中定义和代码中定义有什么本质的区别么?

www.infoq.com/cn/上有一个Singleton的web/win 统一实现可以参考

btw:文章写的不错(我是写不出来的),domain model的实现有很多细节问题需要探究,期待后续文章能有所体现,呵呵
- ifire 2007-12-29 15:48

> re: 是什么限制了我们面向对象(的开发)
对于项目, 使用最简单的技术是明智的, 而对于产品,则需要考虑更多的可变化性, 所以应该采用合理的设计
- 李华星 2007-12-23 14:42

> re: 外国人眼中的面向对象
今天早上明白了很对面向对象的问题。
不过 老马是谁?
- 烟头上的探戈 2007-12-23 11:33

> re: 外国人眼中的面向对象
今天早上突然明白了很对面向对象的问题。
- 烟头上的探戈 2007-12-23 11:32