抽象工厂模式
创建型模式
模式动机
简单工厂模式与方法工厂模式适用于创建单一产品,我们需要一个工厂可以创建一族的产品。
引入两个概念
- 产品等级
产品的继承结构,如海尔电视机集成自电视机
- 产品族
产品族指同一个工厂生产的产品。
定义
Abstract pattern 提供一个创建一系列相关对象的接口,而无需指定他们具体的类。
模式结构
AbstractFactory
ConcreteFactory
AbstractProduct
Product
源码展现
//产品族与产品展示
package per.jbz.simpleFactory;
/**
* 产品族--即表示产品的抽象类
*
*/
public abstract class Apple implements Fruit{
public abstract void showFruit();
}
package per.jbz.simpleFactory;
/**
* 产品类--即表示具体的产品
* @author Coding_Jbz
*
*/
public class SouthApple extends Apple{
@Override
public void showFruit() {
System.out.println("南方苹果");
}
}
package per.jbz.simpleFactory;
public class NorthBanana extends Banana {
@Override
public void showFruit(){
System.out.println("北方香蕉");
}
}
package per.jbz.simpleFactory;
public abstract class FruitFactory {
public abstract Fruit getApple();
public abstract Fruit getBanana();
}
package per.jbz.simpleFactory;
/**
* 一个产品镞对应一个具体工厂
* @author Coding_Jbz
*
*/
public class SouthFruitFactory extends FruitFactory{
@Override
public Fruit getApple(){
return new SouthApple();
};
@Override
public Fruit getBanana(){
return new SouthBanana();
};
}
优点
- 隔离了类的具体实现
- 增加新的产品族很方便,符合OCP
- 实际的业务中应用较多
缺点
1.新增产品时改动量较大
应用
更换统一的主题等等。