1.简单工厂模式
建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
//1确定我们想要造车
public interface CreateCar {
public void createCar();
}
//2确定我们想要造的汽车品种SUV
public class SuvCarCreater implements CreateCar {
@Override
public void createCar() {
System.out.println("this is SuvCarCreater !");
}
}
//3确定我们想要造的汽车品种MPV
public class MpvCarCreater implements CreateCar {
@Override
public void createCar() {
System.out.println("this is MpvCarCreater !");
}
}
//4创建汽车厂,前期可以生产suv和mpv
public class CarFactory {
public CreateCar create(String type) {
if ("suv".equals(type)) {
return new SuvCarCreater ();
} else if ("mpv".equals(type)) {
return new MpvCarCreater ();
} else {
System.out.println("请输入正确的类型!");
return null;
}
}
}
public class FactoryTest {
//5一个客户需要一批suv的汽车
public static void main(String[] args) {
//6找到了一个汽车工厂
CarFactory factory = new CarFactory();
//7客户告诉老板说我们需要一批suv,你能不能给我们造
CreateCar creater= factory.create("suv");
//8老板说没问题,于是把需要的suv给生产出来了
creater.createCar();
}
}
2.多个工厂方法模式
//9随着订单不断增加,人也越来越多。老板想:人太多,不好管,我要将业务分成多个分厂
public class CarFactory {
public CreateCar createSuvCar(){
return new SuvCarCreater ();
}
public CreateCar createMpvCar(){
return new MpvCarCreater ();
}
}
public class FactoryTest {
public static void main(String[] args) {
//10又有客户过来找到老板需要造一批suv
CarFactory factory = new CarFactory ();
//11老板之间将活分给了suv分厂
CreateCar creater= factory.createSuvCar();
//12suv分厂完成汽车的制造
creater.createCar();
}
}
3.静态工厂模式
//13工厂不断扩大,老板不能所有事儿都亲力亲为,于是将权利下发到各个分厂去
public class CarFactory {
public static CreateCar createSuvCar(){
return new SuvCarCreater ();
}
public static CreateCar createMpvCar(){
return new MpvCarCreater ();
}
}
public class FactoryTest {
public static void main(String[] args) {
//13客户又来了,这次又需要一批suv,这次客户直接找到了工厂下面的suv分厂厂长
CreateCar creater= CarFactory.createSuvCar();
//14完成汽车的制造
creater.createCar();
}
}