打字猴:1.70045714e+09
1700457140 设计模式之禅 [:1700453938]
1700457141 设计模式之禅 第8章 工厂方法模式
1700457142
1700457143 设计模式之禅 [:1700453939]
1700457144 8.1 女娲造人的故事
1700457145
1700457146 东汉《风俗通》记录了一则神话故事:“开天辟地,未有人民,女娲搏黄土做人”,讲述的内容就是大家非常熟悉的女娲造人的故事。开天辟地之初,大地上并没有生物,只有苍茫大地,纯粹而洁净的自然环境,寂静而又寂寞,于是女娲决定创造一个新物种(即人类)来增加世界的繁荣,怎么制造呢?
1700457147
1700457148 别忘了女娲是神仙,没有办不到的事情,造人的过程是这样的:首先,女娲采集黄土捏成人的形状,然后放到八卦炉中烧制,最后放置到大地上生长,工艺过程是没有错的,但是意外随时都会发生:
1700457149
1700457150 第一次烤泥人,感觉应该熟了,往大地上一放,哇,没烤熟!于是一个白人诞生了!(这也是缺乏经验的最好证明)
1700457151
1700457152 第二次烤泥人,上一次没烤熟,这次多烤一会儿,放到世间一看,嘿,熟过头了,于是黑人诞生了!
1700457153
1700457154 第三次烤泥人,一边烧制一边察看,直到表皮微黄,嘿,真正好,于是黄色人种出现了!
1700457155
1700457156 这个造人过程是比较有意思的,是不是可以通过软件开发来实现这个过程呢?古人云:“三人行,必有我师焉”,在面向对象的思维中,万物皆对象,是对象我们就可以通过软件设计来实现。首先对造人过程进行分析,该过程涉及三个对象:女娲、八卦炉、三种不同肤色的人。女娲可以使用场景类Client来表示,八卦炉类似于一个工厂,负责制造生产产品(即人类),三种不同肤色的人,他们都是同一个接口下的不同实现类,都是人嘛,只是肤色、语言不同,对于八卦炉来说都是它生产出的产品。分析完毕,我们就可以画出如图8-1所示的类图。
1700457157
1700457158 类图比较简单,AbstractHumanFactory是一个抽象类,定义了一个八卦炉具有的整体功能,HumanFactory为实现类,完成具体的任务——创建人类;Human接口是人类的总称,其三个实现类分别为三类人种;NvWa类是一个场景类,负责模拟这个场景,执行相关的任务。
1700457159
1700457160 我们定义的每个人种都有两个方法:getColor(获得人的皮肤颜色)和talk(交谈),其源代码如代码清单8-1所示。
1700457161
1700457162
1700457163
1700457164
1700457165 图8-1 女娲造人类图
1700457166
1700457167 代码清单8-1 人类总称
1700457168
1700457169 public interface Human{
1700457170
1700457171 //每个人种的皮肤都有相应的颜色
1700457172
1700457173 public void getColor();
1700457174
1700457175 //人类会说话
1700457176
1700457177 public void talk();
1700457178
1700457179 }
1700457180
1700457181 接口Human是对人类的总称,每个人种都至少具有两个方法,黑色人种、黄色人种、白色人种的代码分别如代码清单8-2、代码清单8-3、代码清单8-4所示。
1700457182
1700457183 代码清单8-2 黑色人种
1700457184
1700457185 public class BlackHuman implements Human{
1700457186
1700457187 public void getColor(){
1700457188
1700457189 System.out.println(“黑色人种的皮肤颜色是黑色的!”);
[ 上一页 ]  [ :1.70045714e+09 ]  [ 下一页 ]