标签:
建造一个兵营吧。
红警中的兵营分为盟军兵营和联军兵营,盟军兵营可以训练出美国大兵,联军的可以训练出解放军(暂时怎么认为吧,我也认为玩共和国之辉太赖皮)。
好了,开始造兵营吧。
先造一个兵营类,每次出兵前先判断一下当前是盟军阵营还是联军阵营,然后再造出相应的兵。
package com.zzl.designpattern.factory; import com.zzl.designpattern.strategy.FootSolider; import com.zzl.designpattern.strategy.LiberationArmy; import com.zzl.designpattern.strategy.Solider; public class Barracks { public Solider produceASolider(String type){ Solider solider =null; if(type.equals("盟军")){ solider = new FootSolider(null); }else if(type.equals("联军")){ solider= new LiberationArmy(null); } if(null != solider){ train(solider); } return solider; } /** * 训练士兵 */ private void train(Solider solider){ System.out.println("训练这个士兵" + solider); } }
会有什么问题呢,如果我们新增了一个阵营:尤里阵营,那尤里阵营要建一个兵营怎么办,还得新增一个else if条件。
兵营依赖于兵的实现,如果有很多兵,就要有很多的if条件,真的要将ifelse模式进行到底么?
兵营类应该依赖大兵的抽象类而不是具体的兵种。使用工厂方法:
兵营的抽象类不负责实现具体的solider而由具体的子类负责实例化。
标签:
原文地址:http://www.cnblogs.com/liangflying521/p/5016590.html