打字猴:1.700476258e+09
1700476258 public static void main(String[]args){
1700476259
1700476260 //生产一个成年超人
1700476261
1700476262 ISuperMan adultSuperMan=SuperManFactory.createSuperMan(“adult”);
1700476263
1700476264 //展示一下超人的技能
1700476265
1700476266 adultSuperMan.specialTalent();
1700476267
1700476268 }
1700476269
1700476270 }
1700476271
1700476272 建立了一个超人生产工厂,年复一年地生产超人,对于具体生产出的产品,不管是成年超人还是未成年超人,都是一个模样:深蓝色紧身衣、胸前S标记、内裤外穿,没有特殊的地方。但是我们的目的达到了——生产出超人,拯救全人类,这就是我们的意图。具体怎么生产、怎么组装,这不是工厂方法模式要考虑的,也就是说,工厂模式关注的是一个产品整体,生产出的产品应该具有相似的功能和架构。
1700476273
1700476274 注意 通过工厂方法模式生产出对象,然后由客户端进行对象的其他操作,但是并不代表所有生产出的对象都必须具有相同的状态和行为,它是由产品所决定。
1700476275
1700476276
1700476277
1700476278
1700476279 设计模式之禅 30.1.2 按建造者模式建造超人
1700476280
1700476281 我们再来看看建造者模式是如何生产超人的,如图30-2所示。
1700476282
1700476283
1700476284
1700476285
1700476286 图30-2 按建造者模式生产超人
1700476287
1700476288 又是一个典型的建造者模式!哎,不对呀!通用模式上抽象建造者与产品类没有关系呀!是的,我们当然可以加强了,我们在抽象建造者上使用了模板方法模式,每一个建造者都必须返回一个产品,但是产品是如何制造的,则由各个建造者自己负责。我们来看看程序,先看产品类,如代码清单30-6所示。
1700476289
1700476290 代码清单30-6 超人产品
1700476291
1700476292 public class SuperMan{
1700476293
1700476294 //超人的躯体
1700476295
1700476296 private String body;
1700476297
1700476298 //超人的特殊技能
1700476299
1700476300 private String specialTalent;
1700476301
1700476302 //超人的标志
1700476303
1700476304 private String specialSymbol;
1700476305
1700476306 public String getBody(){
1700476307
[ 上一页 ]  [ :1.700476258e+09 ]  [ 下一页 ]