2006-07-13 13:34
今天早上和往常一样,一起床就打开收音机,然后边洗脸边听新闻,突然从收音中传出一条令人兴奋的消息: 国际田联超级大奖赛洛桑站北京时间今天凌晨全面展开,在最受人关注的男子110米栏的较量中, 奥运会冠军刘翔成功卫冕,并以12秒88的成绩打破了尘封13年之久的12秒91的世界纪录,兴奋的他当场脱下上衣,赤裸上身饶场狂奔一周。美国名将阿诺德以12秒90获得亚军,他的成绩也超过了原来的世界纪录,特拉梅尔以13秒02名列第三,古巴的罗布勒斯以13秒04排名第四,世锦赛冠军杜库里仅仅以13秒46列第七。 
刘翔的确是中国人的骄傲,再一次创造了历史。而在我想来,更为重要的是,刘翔向世界证明了一点:中国人绝对不是田径菜鸟,中国人的体质也不见得就比欧美人差。这让我联想到了刚结束的2006德国狂热的足球世界杯,亚洲球队早早回家了,接下来的世界杯已经是欧美人游戏的舞台,中国队则更早的连外围小组赛都没出线,这已经不知道是多少次让中国球迷伤心、失望甚至绝望了,当问及中国足球队为什么水 |
2006-07-13 13:33
1, 买一套大房子给你,为我们的宝宝留一间婴儿房。 2, 让你躺在我的腿上静静的看书,然后抚摩你的头发。 3, 在洗澡的时候帮你搓背。 4, 当你不吃饭的时候哄着你吃,再不行就喂你吃。 5, 和你去趟西藏。 6, 再和你去趟非洲,让你感觉自己非常的白。 7, 把我的牙刷偷偷的和你换一下。 8, 当你说自己累的很,不想做饭时,把你抱上床盖上被子,然后亲自给你做我最拿手的方便面! 9, 去看你父母的次数尽量比看我父母的时间多。 10,如果你同意就把我们的第一次录下来当作纪念。 11,没有理由的亲亲你。 12,你写的东西我一定做第一个读者,并且不管你写的怎样都鼓励你。 13,每年秋天都和你去登山。 14,经常抱着你,背着你,哪怕是在大庭广众之下。 15,每天醒来先看看你熟睡的样子,轻轻吻你一下。 16,经常逗的你想哭又想笑。 17,陪你逛街,和你一起做饭。 18,在街上走的时候不让你离开自己1米。 19,和你一起抚养孩子长大。 20,在你特殊时期的时候给你端上我做的红糖荷包蛋,看你把泪水蹭到我胸前。 |
2006-07-13 13:32
这段时间,因为项目要评审,忙着准备资料,有好几天没到这里了。有一个模式我一直想好好的写,但总找不到从哪下手,可能是今天忙完了事情,突然想起一个例子可以实现,于是赶紧跑到这里写了下来,和大家分享一下。 装饰模式 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵 活。 适用性 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 处理那些可以撤消的职责。 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。 ___________________________________________________________________________________
应用案例: using System; |
2006-07-13 13:31
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite 使得用户对单个对象和组合对象的使用具有一致性。 适用性 你想表示对象的部分-整体层次结构。 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
案例应用 下面是一个WEB的树型导航菜单的实例 using System; namespace OOD.Tree { public interface INode { string Name { get; set; } string Link { get; set; } & |
2006-07-13 13:30
base 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。 从静态方法中使用 base 关键字是错误的。 示例在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。通过使用 base 关键字,可以从派生类中调用基类上的 Getinfo 方法。 // keywords_base.cs
// Accessing base class members
using System;
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine";
public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee: Pers |
2006-07-13 13:29
{...接上} 现在的这种设计方案本身是没有任何错误的,假如现在我们要引入一种新的xml文件的记录方式,则上面的类结构图会变成: 
图6 如图中蓝色的部分所示,我们新增加了一个继承于 |
2006-07-13 13:29
{...接上} 现在的这种设计方案本身是没有任何错误的,假如现在我们要引入一种新的xml文件的记录方式,则上面的类结构图会变成: 
图6 如图中蓝色的部分所示,我们新增加了一个继承于 |
2006-07-13 13:27
概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。 意图 将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF 《设计模式》] 结构图
|
2006-07-13 13:26
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。包括类的适配器模式和对象的适配器模式两种不同的形式。 意图 将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能 一起工作的那些类可以一起工作。 适用性 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
案例应用 using System; namespace OOD.Adapter { /// <summary> /// 原有的类,只能进行加法、减法运算。 /// <
|
2006-07-13 13:25
C#语言一个最令人感兴趣的地方就是类的索引器(indexer)。简单说来,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类。显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的。本文就会引领你设置类来采用索引器。但是,首先让我们概述下属性这个概念以便了解些必要的背景知识。 先来了解一下属性 假如你曾经用VB6编写过程序,那么你应该很熟悉属性方法才对,所谓属性方法其实就是特殊的类成员,它实现了对私有类域的受控访问。在C#语言中有两种属性方法,其一是get,通过它可以返回私有域的值,其二是set,通过它就可以设置私有域的值。比如说,以下面的代码为例,其间创建了一个FirstName属性,由它控制对私有类成员firstname的访问: class Person { private string firstname; public string FirstName { get {return firstname;} set {firstname = value;} } } 属性声明可以如下编码: Pers |
|
|