public class AK47 extends Weapon {
public void shoot(){
System.out.println("tututututu....");
}
}
public class Bread extends Food {
public void printName(){
System.out.println("wdm");
}
}
public class Broom extends Vehicle {
public void go(){
System.out.println("Car go wuwuwuwu...");
}
}
public class Car extends Vehicle{
public void go() {
System.out.println("Car go wuwuwuwuwu");
}
}
public class MagicStick extends Weapon {
public void shoot(){
System.out.println("diandiandian...");
}
}
public class MushRoom extends Food{
public void printName(){
System.out.println("毒蘑菇");
}
}
具体工厂MagicFactory ,ModernFactory
public class MagicFactory extends AbstractFactory{
@Override
Food createFood() {
return new MushRoom();
}
@Override
Vehicle createVehicle() {
return new Broom();
}
@Override
Weapon createWeapon() {
return new MagicStick();
}
}
public class ModernFactory extends AbstractFactory{
@Override
Food createFood() {
return new Bread();
}
@Override
Vehicle createVehicle() {
return new Car();
}
@Override
Weapon createWeapon() {
return new AK47();
}
}
调用实例,此处使用工厂模式的优势就体现出来了,当我们不管 new ModernFactory()或者 new MagicFactory()的时候,下面的代码都不需要变动。
public class Main {
public static void main(String[] args) {
AbstractFactory f = new ModernFactory();
Vehicle car = f.createVehicle();
car.go();
Weapon w = f.createWeapon();
w.shoot();
Food b = f.createFood();
b.printName();
}
}