1700476165
首先,按照工厂方法模式创建出一个超人,类图如图30-1所示。
1700476166
1700476167
1700476168
1700476169
1700476170
图30-1 按工厂方法建造超人
1700476171
1700476172
类图中我们按照年龄段把超人分为两种类型:成年超人(如克拉克、超能先生)和未成年超人(如Dash、Jack)。这是一个非常正宗的工厂方法模式,定义一个产品的接口,然后再定义两个实现,通过超人制造工厂制造超人。想想看我们对超人最大印象是什么?当然是他的超能力,我们以specialTalent(特殊天赋)方法来代表,先看抽象产品类,如代码清单30-1所示。
1700476173
1700476174
代码清单30-1 超人接口
1700476175
1700476176
public interface ISuperMan{
1700476177
1700476178
//每个超人都有特殊技能
1700476179
1700476180
public void specialTalent();
1700476181
1700476182
}
1700476183
1700476184
产品的接口定义好了,我们再来看具体的产品。先看成年超人,很简单,如代码清单30-2所示。
1700476185
1700476186
代码清单30-2 成年超人
1700476187
1700476188
public class AdultSuperMan implements ISuperMan{
1700476189
1700476190
//超能先生
1700476191
1700476192
public void specialTalent(){
1700476193
1700476194
System.out.println(“超人力大无穷”);
1700476195
1700476196
}
1700476197
1700476198
}
1700476199
1700476200
未成年超人的代码如代码清单30-3所示。
1700476201
1700476202
代码清单30-3 未成年超人
1700476203
1700476204
public class ChildSuperMan implements ISuperMan{
1700476205
1700476206
//超能先生的三个孩子
1700476207
1700476208
public void specialTalent(){
1700476209
1700476210
System.out.println(“小超人的能力是刀枪不入、快速运动”);
1700476211
1700476212
}
1700476213
1700476214
}
[
上一页 ]
[ :1.700476165e+09 ]
[
下一页 ]