概要
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
产品等级结构:
产品等级结构即产品的继承结构,例如一个抽象类是电视机,子类可能有海尔电视机、三星电视机,电视机为父类,具体品牌的电视机为子类。
产品族
在抽象工厂模式中,产品族是指由同一个工厂生产的位于不同产品等级结构张的一组产品,如海尔电视机、海尔冰箱、海尔空调,他们不拥有相同的父类,但他们属于同一个产品族
特点
抽象工厂的出现是为了更好的解决在创建同一个产品族的对象更为便捷
实例如下
import java.sql.Connection;
public class AbstarctFactoryMode {
public static void main(String[] args) {
Condition condition = null;
MyFactory myFactory = new HaierFactory();
condition = myFactory.createCondition();
condition.changeDegree();
}
}
interface Condition{
void changeDegree();
}
interface Tv{
void display();
}
interface Fridge{
void degreeFood();
}
class HaierCondition implements Condition
{
public void changeDegree() {
System.out.println("this is Haier Condition");
}
}
class HaierTv implements Tv
{
public void display() {
System.out.println("this is haier Tv");
}
}
class HaierFridge implements Fridge
{
public void degreeFood() {
System.out.println("this is haier fridge");
}
}
class TCLCondition implements Condition
{
public void changeDegree() {
System.out.println("this is TCL Condition");
}
}
class TCLTv implements Tv
{
public void display() {
System.out.println("this is TCL Tv");
}
}
class TCLFridge implements Fridge
{
public void degreeFood() {
System.out.println("this is TCL fridge");
}
}
interface MyFactory
{
Condition createCondition();
Tv createTV();
Fridge createFridge();
}
class HaierFactory implements MyFactory
{
public Condition createCondition() {
return new HaierCondition();
}
public Tv createTV() {
return new HaierTv();
}
public Fridge createFridge() {
return new HaierFridge();
}
}
class TclFactory implements MyFactory
{
public Condition createCondition() {
return new TCLCondition();
}
public Tv createTV() {
return new TCLTv();
}
public Fridge createFridge() {
return new TCLFridge();
}
}
注:
这里空调、电视和冰箱代表不同的产品等级结构,而海尔冰箱、海尔空调、海尔电视属于同一个产品族,所以需要创建海尔类的具体工厂去创建同一个族的具体对象



