我看了不少工厂模式的文章。。我讲的和他们不一样,反正我的理解能让我更好理解(拗口),别人的理解对我来说像背书(不喜欢背书)
工厂模式主要分两种:普通工厂模式(也叫工厂模式)和抽象工厂模式
一、工厂模式
首先,定义好生产出来的产品的公共接口。然后定义出多个不同的实现该公共接口的产品类。
然后写一个工厂类,包含有工厂方法,其中工厂方法接收参数,工厂方法内部通过对参数进行逻辑判断,返回相应定制生产出来的产品实例。工厂方法的返回类型为各产品的公共父接口就行了。
二、抽象工厂模式
1.抽象工厂模式就是把上面讲的工厂模式中的工厂也抽象成接口,实现该工厂接口的类也就是工厂类,此时就可以定义多个实现了同一个接口的不同工厂类了。
抽象工厂
interface AbstractFactory {
public abstract AbstractProductA createProductA(type parameter); //工厂方法一
public abstract AbstractProductB createProductB(type parameter); //工厂方法二
……
}
工厂一
class Factory1 implements AbstractFactory{
//工厂方法一
public AbstractProductA createProductA(type parameter){
.....
}
//工厂方法二
public AbstractProductB createProductB(type parameter){
.....
}
}
工厂二
class Factory2 implements AbstractFactory{
//工厂方法一
public AbstractProductA createProductA(type parameter){
.....
}
//工厂方法二
public AbstractProductB createProductB(type parameter){
.....
}
}
2.然后定义一个生产工厂的工厂类,该类与普通工厂模式中的工厂类似,包含有工厂方法,根据参数进行逻辑判断,进而生产出响应的产品(这里的产品指的是工厂)。
//工厂生产者
class FactoryProductor{
public AbstractFactory getFactory(type parameter){
//根据参数生产工厂
}
}
3.然后通过第2步生产出来的工厂再生产产品.....
//通过工厂生产者生产出想要的工厂
AbstractFactory factory=new FactoryProductor().getFactory(parameter1);
//通过该工厂生产想要的产品
//产品也是实现一个公共接口的
AbstractProductA productA=factory.createProductA(parameter2);
AbstractProductB productB=factory.createProductB(parameter3);