抽象工厂
我们已经知道,工厂方法模式只能生产单一产品,如果新增同一等级的产品,那么可以增加对应产品的工厂,既如现在有这样一个需求,我们需要手机和电脑两种产品,这两种产品可以看作是形成了一个产品族,我们需要一个工厂能够同时生产手机和电脑,显然工厂方法做不到这样,而抽象工厂就可以,抽象工厂具有一个可以生产产品族的接口,然后有不同的工厂去实现,相当于是一个可以生产工厂的工厂。
示例如下:
1.首先创建手机和计算机产品接口
public interface IComputer {
void name();
}
public interface IPhone {
void name();
}
2.创建对应的产品类
public class XiaomiComputer implements IComputer{
@Override
public void name() {
System.out.println("我是小米工厂生产的计算机");
}
}
public class XiaomiPhone implements IPhone {
@Override
public void name() {
System.out.println("我是小米工厂生产的手机");
}
}
public class HuaweiComputer implements IComputer{
@Override
public void name() {
System.out.println("我是华为工厂生产的计算机");
}
}
public class HuaweiPhone implements IPhone{
@Override
public void name() {
System.out.println("我是华为工厂生产的手机");
}
}
2.创建工厂接口及实体工厂
//抽象工厂
public interface IProductFactory {
IComputer getComputer();
IPhone getPhone();
}
public class XiomiFactory implements IProductFactory {
@Override
public XiaomiComputer getComputer() {
return new XiaomiComputer();
}
@Override
public XiaomiPhone getPhone() {
return new XiaomiPhone();
}
}
public class HuaweiFactory implements IProductFactory {
@Override
public HuaweiComputer getComputer() {
return new HuaweiComputer();
}
@Override
public HuaweiPhone getPhone() {
return new HuaweiPhone();
}
}
3.运行结果