遵循的原则:
1、简单工厂模式
其实我们最多用的还是简单工厂模式,不过他违反了开闭原则
总结:简单工厂模式,有一个工厂类提供静态方法根据多态的特性返回相应的实例对象!
2、工厂方法模式
优点:实现的开闭原则
但是代码太过冗余
对比:
所以我们在实际开发中一般选用简单工厂模式!
3、抽象工厂模式
工厂的工厂叫抽象工厂模式!
有产品族的概念:
手机和路由器有不同的厂家制造,不同的厂家有不同的工厂实现
抽象工厂接口 根据不同实现出不同的工厂,工厂生产不同产品族的产品!
package _02factory.abstract1;
/**
* @author zhangbingbing
* @version 1.0
* @date 2020/6/14 23:32
*/
public interface AbstractFactory {
//生产手机
Phone createPhone();
//生产路由器
Router createRouter();
//笔记本
Laptop createLaptop();
}
package _02factory.abstract1;
/**
* @author zhangbingbing
* @version 1.0
* @date 2020/6/14 23:34
*/
//华为工厂
public class HuaweiFactory implements AbstractFactory {
@Override
public Phone createPhone() {
return new Huawei(); //华为手机
}
@Override
public Router createRouter() {
return new HuaweiRouter(); //华为路由器
}
@Override
public Laptop createLaptop() {
//全改
return new HuaweiLaptop(); //华为笔记本
}
}
package _02factory.abstract1;
/**
* @author zhangbingbing
* @version 1.0
* @date 2020/6/14 23:34
*/
public class Client {
public static void main(String[] args) {
System.out.println("=================苹果系列产品==========");
AbstractFactory factory = new AppleFactory();
Phone phone = factory.createPhone();
Router router = factory.createRouter();
phone.sing();
router.wifi();
System.out.println("=================华为系列产品==========");
AbstractFactory factory2 = new HuaweiFactory();
phone = factory2.createPhone();
router = factory2.createRouter();
phone.sing();
router.wifi();
}
}
总结:
原文:https://www.cnblogs.com/bingstudy/p/13134445.html