工厂模式(Factory Pattern),属于创建型模式。
举个栗子
小明很喜欢车。
public interface Car {
String getAdvantages();
}
手上有一张法拉利488的5元代金券。
public class Ferrari implements Car {
@Override
public String getAdvantages() {
return "好看";
}
}
有个人说在秋名山输给一辆五菱宏光,对手用惯性飘移过弯。
public class WuLing implements Car {
@Override
public String getAdvantages() {
return "超大空间";
}
}
这两款车都很牛啤的亚子,但是买法拉利还要去意大利提车,太麻烦了,还是选五菱宏光吧。
老王听说了这个事,建了个简单工厂。
public class SimpleFactory {
public Car getCar(String name) {
if (name.equals("Ferrari")) {
return new Ferrari();
} else if (name.equals("WuLing")) {
return new WuLing();
} else {
return null;
}
}
}
工厂建成,老王打电话叫小明过来看车。
public class Test {
public static void main(String[] args) {
SimpleFactory simpleFactory = new SimpleFactory();
Car ferrari = simpleFactory.getCar("Ferrari");
System.out.println(ferrari.getAdvantages());
Car wuling = simpleFactory.getCar("WuLing");
System.out.println(wuling.getAdvantages());
}
}
老王给小明介绍了两个品牌各自的优点,小明的内心挣扎了一番,还是五菱宏光的超大空间让他更加心动。