深一层看Singleton

摘要: “保证对象有唯一的实例,并且提供一个全局访问点”是Singleton模式比较常见的描述。不知您是否意识到,这个定义本身就散发着某种"bad smell"。为什么要把“保证对象有唯一实例”的创建职责,和“提供一个全局访问点”的访问职责混入一个模式呢?B是A的使用者,它只关注A提供的功能接口;A只能有唯一实例是A的创建者的事情,与B无关。 阅读全文
posted @ 2009-10-31 14:53 Todd Wei 阅读(2941) 评论(52) 推荐(8) 编辑

C# vs C++之二:GC vs RAII

摘要: C#和C++两门语言的定位不同,它们在资源管理方面采取了两种截然不同的方式:一为GC,一为RAII。GC让程序建立在更高的抽象层次上,使资源管理变得更方便,更安全;而RAII则保留了C的底层能力,同时在C++特性的支持下提供了简单有效的资源管理方式。我们知道C++最激烈的批评往往来自于C 社区,而在我看来C程序员可以不接受虚函数,不接受模板,但有什么理由不接受RAII呢?可以说RAII是C++相对C来说几乎无副作用的明显进步。 阅读全文
posted @ 2009-08-19 08:42 Todd Wei 阅读(6479) 评论(44) 推荐(9) 编辑

C# vs C++之一:委托 vs 函数指针

摘要: 比较C#委托和C++函数指针的异同,探讨C++ functor和静多态:1.C#委托对象是真正的对象,C/C++函数指针变量只是函数入口地址;2.C++的委托对象:functor;3.C++的静多态:模版 阅读全文
posted @ 2009-08-09 14:29 Todd Wei 阅读(13045) 评论(18) 推荐(19) 编辑

博客园积分算法探讨

摘要: 今天在dudu的《博客园FAQ》上看到了博客积分算法规则。因为同样是搞互联网的,平时工作也涉及到用户积分算法的设计,所以特把此问题拿出来分析探讨。初衷只是纯学术的研究探讨,并不构成对博客园积分机制的意见建议。 阅读全文
posted @ 2009-07-31 13:21 Todd Wei 阅读(9396) 评论(198) 推荐(56) 编辑

C#动静结合编程之四:泛型委托

摘要: 1.多态与继承的区别联系,如何避免“滥用继承”;2.泛型委托 阅读全文
posted @ 2009-07-19 11:08 Todd Wei 阅读(3062) 评论(6) 推荐(6) 编辑

REST构架风格介绍之二:CRUD

摘要: REST是以资源为核心的,没有服务的概念,这的确让人怀疑REST能否像ORB或SOA一样支持复杂的应用?REST和以数据为核心的关系数据库是类似的。数据和资源本质上都是状态,对状态的操作CRUD少一个不行,多一个多余。因此,REST也采用CRUD四种标准操作,分别对应于HTTP协议的POST/GET/PUT/DELETE方法。 阅读全文
posted @ 2009-05-09 09:11 Todd Wei 阅读(5711) 评论(5) 推荐(0) 编辑

REST构架风格介绍之一:状态表述转移

摘要: REST(Representational State Transfer)是HTTP协议的作者Roy Fielding博士在其博士论文中提出的一种互联网应用构架风格。与以远程对象为核心的ORB和以服务为核心的SOA相比,以资源为核心的REST让我们从崭新的视角审视互联网应用。REST为互联网应用量身定做的简洁模型、与HTTP协议的完美结合、构架的高伸缩性,为互联网应用构架设计和异构系统集成设计带来了一股清新的空气。 阅读全文
posted @ 2009-05-08 01:38 Todd Wei 阅读(5937) 评论(21) 推荐(1) 编辑

C#3.0实现变异赋值(Mutantic Assignment)

摘要: 变异赋值让代码简洁优雅,可惜现在C#还没有对变异赋值运算符的支持,本文尝试在C#3.0中用扩展方法模拟变异赋值功能。 阅读全文
posted @ 2009-04-20 13:42 Todd Wei 阅读(3184) 评论(17) 推荐(0) 编辑

C#动静结合编程之三:Duck Typing

摘要: 前面谈到了委托的好处,但可惜的是委托还无法覆盖接口或类的所有功能,有朋友提到“接口是对象功能的抽象,而委托是方法功能的抽象”就是这个意思。那么我们自然会想,有没有一种方式,能将委托的思想应用于对象呢?有!它就是:duck typing。前文已经谈到,duck typing关注“对象能做什么”或者说“如何使用对象”,对象继承自什么类,或者实现什么接口并不重要。 阅读全文
posted @ 2009-03-26 01:23 Todd Wei 阅读(5043) 评论(7) 推荐(1) 编辑

C#动静结合编程之二: 两种哲学

摘要: 本文介绍两种OO多态哲学:继承哲学和鸭子哲学。继承哲学关注对象继承结构,即“你继承什么你就是什么”;鸭子哲学关注对象的性质,即“你能做什么你就是什么”。 阅读全文
posted @ 2009-03-16 21:58 Todd Wei 阅读(2639) 评论(15) 推荐(2) 编辑