1.简单工厂模式
Car接口规定汽车的具体功能
Benz类和Tesla类具体实现Car接口,重写具体功能
CarFactory根据判断调用Benz类和Tesla类的构造方法来实现创建各种类型汽车的功能
2.工厂方法模式
与简单工厂模式不同的在于:CarFactory接口用于规定各个工厂生产汽车的方法,生产不同汽车由不同实现类工厂去具体实现
3.抽象工厂模式
Consumer
public class Consumer {
public static void main(String[] args) {
Phone phone = new HuaweiFactory().producePhone();
phone.start();
Router router = new HuaweiFactory().produceRouter();
router.start();
phone = new XiaomiFactory().producePhone();
phone.start();
router = new XiaomiFactory().produceRouter();
router.start();
}
}
(1)ProductSuperFactory接口是HuaweiFactory和XiaomiFactory要实现的接口,规定了要实现的两个方法,即要生产的两种产品:Phone和Router
(2)HuaweiFactory具体写了Huawei如何生产HuaweiPhone和HuaweiRouter,体现了同一品牌,XiaomiFactory也是一样
(3)Phone接口是HuaweiPhone和XiaomiPhone要实现的接口,规定了Phone的功能,体现了同一品种,Router接口也是一样
(4)HuaweiPhone具体写了HuaweiPhone的具体功能,HuaweiRouter,XiaomiPhone,XiaomiRouter也是一样
ProductSuperFactory
public interface ProductSuperFactory {
Phone producePhone();
Router produceRouter();
}
Phone
public interface Phone {
void start();
}
Router
public interface Router {
void start();
}
HuaweiPhone
public class HuaweiPhone implements Phone {
@Override
public void start() {
System.out.println("HuaweiPhone开启");
}
}
HuaweiRouter
public class HuaweiRouter implements Router {
@Override
public void start() {
System.out.println("HuaweiRouter开启");
}
}
XiaomiPhone
public class XiaomiPhone implements Phone {
@Override
public void start() {
System.out.println("XiaomiPhone开启");
}
}
XiaomiRouter
public class XiaomiRouter implements Router {
@Override
public void start() {
System.out.println("XiaomiRouter开启");
}
}
HuaweiFactory
public class HuaweiFactory implements ProductSuperFactory{
@Override
public Phone producePhone() {
return new HuaweiPhone();
}
@Override
public Router produceRouter() {
return new HuaweiRouter();
}
}
XiaomiFactory
public class XiaomiFactory implements ProductSuperFactory{
@Override
public Phone producePhone() {
return new XiaomiPhone();
}
@Override
public Router produceRouter() {
return new XiaomiRouter();
}
}