Skip to content

Latest commit

 

History

History
93 lines (79 loc) · 1.78 KB

factory-mode.md

File metadata and controls

93 lines (79 loc) · 1.78 KB

定义

工厂模式屏蔽了对象的实例化过程,提供单独的入口去获取同一抽象接口下的多个实现。

  • 优点:扩展性高,屏蔽了实例化过程。
  • 缺点:增加了系统复杂度。

实现

场景: 通过武器工厂去获取不同的武器!

抽象武器类:

public abstract class Armament {
	public abstract String name();
}

坦克:

public class Tank extends Armament{

	@Override
	public String name() {
		return "tank";
	}

}

炸弹:

public class Bomb extends Armament{

	@Override
	public String name() {
		return "bomb";
	}

}

飞机:

public class Airplane extends Armament{

	@Override
	public String name() {
		return "air plane";
	}

}

最后的是武器工厂:

public class ArmamentFactory {

	public static Armament getArmament(String name){
		if(null == name || name.equals("")){
			return null;
		}
		if(name.equals("airplane")){
			return new Airplane();
		}else if(name.equals("tank")){
			return new Tank();
		}else if(name.equals("bomb")){
			return new Bomb();
		}else{
			return null;
		}
	}

}

测试:

public class Test {

	public static void main(String[] args) {

		Armament armament = ArmamentFactory.getArmament("airplane");
		System.out.println(armament.name());

		armament = ArmamentFactory.getArmament("tank");
		System.out.println(armament.name());

		armament = ArmamentFactory.getArmament("bomb");
		System.out.println(armament.name());
	}
}

输出结果:

air plane
tank
bomb

总结

工厂模式适合于多实现类的管理,屏蔽掉各实现类的实例化过程,提供简洁的方法去获取对应的实现,让使用者不需要关心实现类从何而来,如何而来,只需要将之用于合适的位置即可。