摘要: 外观模式适用于系统内部有太多独立的子系统,并且从用户的角度来考虑又必须提供一致且相对简单的接口的情景,因此我觉得用飞机来做一个形象的描述会比较合适,请不要把飞机想象的过于复杂(当然,想象得过于简单也是错误的)。 阅读全文
posted @ 2008-02-20 13:27 麦机长 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 现在国内越来越多的城市普及了数字电视,机顶盒也作为一名新成员走进了千家万户,在这里,我将借用机顶盒的例子来描述一下装饰模式。 阅读全文
posted @ 2008-02-20 11:22 麦机长 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 我相信大家小时候都玩过积木,回忆一下,我们玩过的积木大致分两种:一种是各种形状的木块,我们只要根据自己的想象往上搭就可以搭建出各式各样的小房子、小汽车;而另一种是后来才出现的塑料积木,它的形状较前者少,主要特点是一块就是一个颜色(前者往往只有一面有颜色,不过常常是图案而不仅仅是单色块),较薄,一面是凸点,一面是凹槽,所以可以在不断地叠加过程中组成新的更大的模块。我们在此就以第二种积木作为组合模式的比喻素材。 阅读全文
posted @ 2008-02-02 16:39 麦机长 阅读(690) 评论(2) 推荐(0) 编辑
摘要: 桥接模式中的这个起连接作用的“桥”其实是不存在的,至少不是用代码直接写出来的,而是说在这种模式中,抽象和实现之间有一种起到像桥梁一样的连接作用的关系,根据这个特点取名为“桥接模式”。 阅读全文
posted @ 2008-01-31 17:16 麦机长 阅读(892) 评论(1) 推荐(0) 编辑
摘要: 某地新建了一座怀旧风格的酒店,一切都按照上个世纪中期的欧美风格来设计。当地一个颇有实力的电器批发商好不容易抢到了一张订单,这家酒店要购进100个怀旧风格的电风扇。批发商找到当地一个颇有规模的电器生产厂家,该厂家正好有一个型号的电风扇是怀旧风格的,但不巧的是,这批电风扇都是两向插头,而酒店需要的是三向的。你认为生产厂家会怎么办,告诉批发商:“对不起,这单生意我们做不了。”或是“去,告诉酒店老板,让他们修改电路,给电风扇准备好一个两向插口。”呢?显然,任何一个正常的老板都知道,最明智的办法就是让电风扇具备一个二转三的转接头,这样的做法是最快也是最有效率的。 阅读全文
posted @ 2007-12-10 21:43 麦机长 阅读(881) 评论(2) 推荐(0) 编辑
摘要: 用面向对象的术语来描述人类的话,我们每个人都是人类这个类的一个实例,当然,如果细分的话还可以在人类下面分出很多子类,不过我们要说的重点不是这个类的层级划分。我们都知道,***也是人类的一个实例,但是无论西方人、*方人还是非洲人都不可能忽视*主席,他们一提到中国,可能首先想到的就是“***”这三个字,其它的每个中国人在他们眼里可能就不那么招眼,在他们看来无非是黄皮肤黑头发的一个人而已,虽然*主席也是这样的特征,但是他们却把他很清晰、很明确地分离出来,作为中国人的象征。作为中国乃至世界的伟人,全人类只有一个*主席,虽然我们也常说“我就是我”,表明这世界上“只有一个我”,但我说过了,在别人眼里,我们可以忽略不计。“*主席”可以很好地解释什么是Singleton(单件模式)。 阅读全文
posted @ 2007-12-10 14:41 麦机长 阅读(556) 评论(2) 推荐(0) 编辑
摘要: 中国人有剪纸的传统,尤其是遇到红白喜事时,人们往往会用各种纸张裁剪出各式各样的剪纸作品,比如大红囍字、剪纸画、汽车、洋房等等。不同的物品要由不同类型的纸张来剪才合适,例如,没人用土黄的马粪纸去剪那个又红又亮的“囍”字、也不会有人用A4的复印纸来剪那种洒向满山遍野的纸钱。纸分很多类,每一类里面又有很多种,每一种里面可能又有很多型号,国人对纸的选用是很讲究的,不过剪刀嘛,无外乎就那几种,不会有人要求每一种纸要对应一种剪刀,对于剪纸来说用的就是日常的剪刀,裁缝的大剪刀过于粗犷、医生的手术剪刀过于精贵,都不适用。 阅读全文
posted @ 2007-12-10 14:16 麦机长 阅读(833) 评论(0) 推荐(0) 编辑
摘要: 我们现在把场景从险象丛生的特工战切换到更为壮观的二战中来,很多人都看过《拯救大兵瑞恩》,这部电影最著名的两场战斗非首和尾莫属,我们就用最后一场战役来举例说明什么是工厂方法吧。 阅读全文
posted @ 2007-12-05 19:41 麦机长 阅读(790) 评论(1) 推荐(0) 编辑
摘要: 不少朋友都看过《伯恩的身份》这部电影吧,即使没看过的朋友也至少应该听说过“特工”这种职业吧,我们不管特工枪法有多准、杀人的招数有多酷,但至少作为一个特工,没个三五本护照和身份证你都不好意思跟别人打招呼。那么我们就借用这样一个办证的场景来描述一下什么是Builder(生成器)模式吧。办证本就是一件技术活儿,绝不是把个人信息往小纸片上一填就完事儿的,需要经过很多复杂的工序,我个人觉得正恰好符合Builder模式所描述的场景。 阅读全文
posted @ 2007-12-04 20:51 麦机长 阅读(916) 评论(1) 推荐(0) 编辑
摘要: 当用户需要应用程序为他们提供一系列不同的对象,而这些对象又属于同一范畴且具有一定的相互关联时,我们可以用抽象工厂模式来为用户提供一个统一的接口而无需他们自行选择具体由哪个类来创建哪个对象。 阅读全文
posted @ 2007-12-04 10:37 麦机长 阅读(995) 评论(8) 推荐(0) 编辑
摘要: 自从GoF完成《设计模式——可复用面向对象软件的基础》一书之后,“设计模式”的概念深入人心,甚至成为一个开发人员成熟与否的衡量标准(暂且不论某些观点是否妥贴)。由此可见,设计模式之经典,也就无需我赘述了。 阅读全文
posted @ 2007-12-04 09:14 麦机长 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 前言 创建型模式 Abstract Factory(抽象工厂); Builder(生成器); Factory Method(工厂方法); Prototype(原型); Singleton(单件); 结构性模式 Adapter(适配器); Bridge(桥接); Composite(组成); Decorator(装饰); Facade(外观); Flyweight(享... 阅读全文
posted @ 2007-12-04 09:11 麦机长 阅读(1105) 评论(2) 推荐(0) 编辑
摘要: 其实我想,用惯了.NET平台的朋友都会想到,本着该平台一贯的简洁、易用的设计理念,LINQ to XML也不会有多难用,那么我们就从实际的例子入手吧。 阅读全文
posted @ 2007-12-01 20:19 麦机长 阅读(1245) 评论(0) 推荐(0) 编辑
摘要: C# 3.0给我们带来了自动属性的概念,其代码更显简洁,而简洁不正是C#一贯追求的风格之一么? 阅读全文
posted @ 2007-11-30 11:19 麦机长 阅读(897) 评论(2) 推荐(0) 编辑
摘要: 其实绝大部分的程序都是在跟数据打交道,然而目前的情景是,程序员编写代码调用数据库提供的接口对数据进行操作,至于数据库内部是如何进行操作的,不得而知,程序员只是传递给数据库一些文本命令,数据库对其进行解析并作出相应的反应,这样的做法存在着明显的缺陷,例如程序员无法实现编译时验证并且也无法获得编写代码时的智能感知功能。并且,编程语言和数据库之间也存在着很大的差异,现在的高级编程语言都以对象的形式来建立数据模型,对象用属性来保存数据,用方法来操作数据,而关系型数据库中则是以表的形式来保存数据,以存储过程来操作数据。对象和行之间的差别是显而易见的,那么如何来跨越这条鸿沟了,这正是LINQ to SQL要做的事情。 阅读全文
posted @ 2007-11-28 00:47 麦机长 阅读(1040) 评论(0) 推荐(0) 编辑