工厂模式分为三种:简单工厂,工厂方法,抽象工厂。
简单工厂:一个工厂负责一种产品。
eg:一个手机工厂生产一种手机。
工厂方法:设计一个工厂接口。实现多个工厂。
eg:一个手机工厂生产2种型号的手机。
设计:public interface Factory{
public void create();
}
class FactoryOne{
public void create(){
生产手机1;}
}
class FactoryTow{
public void create(){
生产手机2;}
}
抽象工厂:就是将多个工厂方法中的工厂接口集合在一起
eg:
public interface AbstractFactory {
public ProductA factoryA();
public ProductB factoryB();
}
这样工厂A就是可以负责生产手机。工厂B就是负责生产电视等。
实际应用:spring工厂模式:
spring中的bean就是采用工厂方法的。在spring框架中,spring将所有的bean封装在一个工厂中。在使用过程中,客户传入一个name属性,spring就从工厂中取出具体的bean。具体体现就是:我们加载配置获取工厂,传入name值。spring工厂就去调用具体的生产工厂,创造出一个bean给客户端。
简单工厂跟依赖注入区别:
虽然都是通过具体类直接调用其他类。
但是,工厂方法是:通过get的获取具体的bean,就是说工厂本身就具备实例化bean的能力,是一种设计模式,类之上的设计。就是工厂需要创造出这个bean
依赖注入:通过set方法将具体的类注入到需要它的类中。调用类本身不具备实例化bean的能力,只是框架帮我们实现了实例化的过程。这是一种设计原则。类里面的属性。减低代码的耦合度。就是我这个类需要调用其他类的方法,而我们不得不去实例化他,所以引入了依赖注入的设计原则。