尽管已经很仔细的检查和审核,但错误还是没有能避免。在此向已经购买了本书的读者诚意地说声抱歉。现勘误如下:
1.01 P2 上方代码第二行,“if (O == "/") ”,应将"O"改为"B",本页第二段代码的倒数第五行,也是相同的错误,应将"O"改为"B"。
1.02 P157 15.9节,第四段,"再添加引用System.configuratio15.",应将"15."改为"n".
1.03 P61,第8行,原文:“你仔细观察一下,‘Pursuit(追求者)’和‘SchoolGirl(被追求者)’有没有相似的地方”?” 改为:“你仔细观察一下,‘Pursuit(追求者)’和‘Proxy(代理)’有没有相似的地方”?” 第9行,原文:“...三个方法,只不过‘SchoolGirl(被追求者)’送的礼物是‘Pursuit(追求者)’买的...” 改为:“...三个方法,只不过‘Proxy(代理)’送的礼物是‘Pursuit(追求者)’买的...” ( 提供)
1.04 P119,第4行,原文:“具体的小人,具体实现如何画出小人的头身手脚各个部分。” 改为:“具体的小人建造者,具体实现如何画出小人的头身手脚各个部分。” ( 提供)
1.05 P259 图 图中Colleague到Mediator之间的连线不应该多一个聚合关系而应该是关联关系。 ( 提供)
1.06 P271中间代码:原文:"UnsharedConcreteFlyweight uf = new UnsharedConcreteFlyweight();" 改为:"Flyweight uf = new UnsharedConcreteFlyweight(); "将更加准确。( 提供)
1.07 P220 第1行 原文:“大鸟,棒着个手机,玩什么呢?" 其中“棒”改为:“捧” (提供)
1.08 P347 第5行 "简单理解就是耦断丝连" 更改为:"简单理解就是藕断丝连" (提供)
1.09 P84 9.5节 第1行 “你现在‘简历’对象里的数据都是string类型的,也就是值类型....”其中“也就是值类型”改为“而string是一种拥有值类型特点的特殊引用类型” ( 提供)
1.10 P10 在1.10前,增加文字如下“(作者注:以上代码读者如果阅读吃力,说明您对继承、多态、虚方法、方法重写等概念的理解不够,建议先阅读本书附录一,理解这些基本概念后再继续往下阅读。) ”
1.11 P359 第4行“所以我们可以应用集合的RemoveRt方法...” 其中“RemoveRt”改为“RemoveAt”( 提供)
1.12 P233 第2行:“哈,小菜说的和GoF说的不就是一会事吗!” 其中“一会事”改为“一回事”( 提供)
以上为二次重印时已修正的错误,以下为重印后发现的错误,特公告如下。
2.01 P86 “客户端调用代码”下方代码第10行与第11行之间,即在“Resume c = (Resume)a.Clone();”与“c.SetWorkExperience("1998-2003", "ZZ企业");”之间加上一行代码:“c.SetPersonalInfo("男", "24"); ” ( 提供)
2.02 P49 倒数第4行,"你的意思是,应该在内部组装完闭" ,其中“完闭”应该为"完毕" (提供)
2.03 P228 末尾代码,“class HandsetMP3 : HandSoft ”其中"HandSoft"应改为"HandsetSoft"( 提供)
2.04 P241 中间代码中的注释“ // 点菜完闭,通知厨房 ”其中“完闭”应该为"完毕"( 提供)
2.05 P62 本页三段代码第一句中 "GiveGift"由于是接口,所以都改为"IGiveGift" (提供)
2.06 P272 最下方代码开始处 在“//网站工厂”上面增加“using System.Collections; ”,以避免由于应用了Hashtable而使得初学者编译时不能通过。( 提供)
2.07 P285 中间代码第14行,即else语句里第3行“doubleplayValue”应注意当中有一个空格,即应该是“double playValue” 。 ( 提供)
2.08 P286 中间文字“音符类(TerminalExpression)”,其中“音符类”应该为“音阶类”( 提供)
2.09 P295 中间,“结果显示”里的内容,“男人成功时”、“男人失败时”和“男人恋爱时”中“男人”改为“Man”,“女人成功时”、“女人失败时”和“女人恋爱时”中“女人”改为“Woman”
2.10 P146 第7行与第8行之间,即“……此时如何办呢?”与“啊,我觉得那要增加好多类……”之间增加下方一段代码( 提供)
class Department


{
private int _id;
public int ID

{

get
{ return _id; }

set
{ _id = value; }
}

private string _deptName;
public string DeptName

{

get
{ return _deptName; }

set
{ _deptName = value; }
}
}
2.11 P340 倒数第三段中间部分,“set访问器没有显示设置参数”,其中“显示”应改为“显式”。(提供)
2.12 P352 中间四段代码,分别是Cat、Dog、Cattle、Sheep四个类中“public override string getShoutSound() ” ,其中“public”应改为"protected" (提供)
以上为三次重印时已修正的错误,以下为重印后发现的错误,特公告如下。
3.01 p52 上方代码的第四个注释框中:“本类独有的方法,以区别于ConcreteDecoratorB”,其中“ConcreteDecoratorB”应改为“ConcreteDecoratorA”。(p大simba提供)
3.02 p164 最下边的注释框里:“设置ConcreteStateA的下一个状态是ConcreteB”,其中“ConcreteStateA”与“ConcreteStateB”应该把A和B互换过来”。(p大simba提供)
3.03 P332 倒数第三行 "我对你的敬仰真如涛涛江水",其中“涛涛江水”应改为“滔滔江水”。(zml 提供)
3.04 P333 第十四行,“工厂工厂,公仔爱你,就像老鼠爱大米。” 其中“公仔”应改为“工仔”。(zml 提供)
3.05 P37 4.4节下的第一段第五行, “招聘大学生的公司的咨讯",其中“咨讯”应改为“资讯”。( 提供)
3.06 前言中P15倒数第8行, "Erich Gamm",其中"Gamm"应该是"Gamma"(在P367,附录B的第一行有同样的错误). ( 提供)
3.07 P12与P68两页上面简单工厂模式的图,简单工厂类和运算类之间的关系应该是依赖(Dependency)而非关联(Association),即简单工厂类与运算类的连线是虚线箭头,而非实线箭头。(Steven Chen 和 提供)
3.08 p349 左上方那个说明框 “增加了override表示方法重写”指向上应该再向下一些,指向“override”才正确。
3.09 P150 倒数第五行,“ProductB1是AccessUser”,其中“AccessUser”应改为“SqlserverDepartment”。( 提供)
3.10 前言中P13 最后一行,“表示此名摘自”,其中“此名”应为“此句” (提供)
3.11 前言中p11倒数第六行“《Java与模式》(作者:阎宏”,其中在“阎宏”后应该加一个“)” (提供)
3.12 P11最后一行,“我们来看看这几个类的结构图。”与上文脱节。应该改为“好了,最后,我们来看看这几个类的结构图。”(提供)
3.13 P13第二段第二行,“接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了‘讲人话’的接口。”,其中“就是唐老鸭类实现了‘讲人话’的接口”改为“比如图中的唐老鸭类就是实现了‘讲人话’的接口”(提供)
3.14 p189 倒数第二行“你是意思是”应为“你的意思是”。(提供)
3.15 P330 倒数第四段,“我们的短信平台刚刚关闭”,其中“短信”改为“浏览器投票” 。(提供)
3.16 p313 倒数第四行,“进级决赛”改为“晋级决赛”。(提供)
3.17 p103 第六段,“买一只好的股票放在那里所谓的‘悟股’”,其中“悟股”应为“捂股” (提供)
若读者您还发现什么错误,请在此回复或给我留言,我将及时公布。在此先说一声谢谢。