工厂模式分为:简单工厂、工厂方法、抽象工厂
Simple Factory:感觉所有的产品都在一个类里面生产出来
class FruitFactory {
public Apple makeApple() {
// Code for creating an Apple here.
}
public Orange makeOrange() {
// Code for creating an orange here.
}
}
Factory Method:感觉所有的实现都在子类中实现,而子类都会实现父类中共有的方法,从而生产出各种产品
abstract class FruitPicker {
protected abstract Fruit makeFruit();
public void pickFruit() {
private final Fruit f = makeFruit(); // The fruit we will work on..
<bla bla bla>
}
}
class OrangePicker extends FruitPicker {
@Override
protected Fruit makeFruit() {
return new Orange();
}
}
Abstract Factory:感觉是对抽象方法的升级,就拿开汽车来说:工厂方法可能就会抽出一个开汽车的方法让子类各自去实现具体是开宝马还是奔驰;如果是抽象方法可能就会抽的更具体一些,抽出一个生产汽车的方法,同时也抽出一个开汽车的方法,确保生产汽车和开汽车同时构建,这样就不会开错车。
interface PlantFactory {
Plant makePlant();
Picker makePicker();
}
public class ApplePicker implements PlantFactory {
Plant makePlant() {
return new Apple();
}
Picker makePicker() {
return new ApplePicker();
}
}
public class OrangePicker implements PlantFactory {
Plant makePlant() {
return new Orange();
}
Picker makePicker() {
return new OrangePicker();
}
}