当需要创建的产品有多个产品线(产品族)时使用抽象工厂模式
定义 为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类
实现
1.创建抽象产品
public abstract class DeskComputer {
public abstract void start();
}
public abstract class NoteComputer {
public abstract void start();
}
2.创建具体产品
public class DellDeskComputer extends DeskComputer{
@Override
public void start() {
System.out.println(getClass().getName());
}
}
public class DellNoteComputer extends NoteComputer{
@Override
public void start() {
System.out.println(getClass().getName());
}
}
public class HPDeskComputer extends DeskComputer{
@Override
public void start() {
System.out.println(getClass().getName());
}
}
public class HPNoteComputer extends NoteComputer{
@Override
public void start() {
System.out.println(getClass().getName());
}
}
3.创建抽象工厂
public abstract class AbstractFactory {
public abstract NoteComputer createNoteComputer();
public abstract DeskComputer createDeskComputer();
}
4.创建具体工厂
public class DellFactory extends AbstractFactory{
@Override
public NoteComputer createNoteComputer() {
return new DellNoteComputer();
}
@Override
public DeskComputer createDeskComputer() {
return new DellDeskComputer();
}
}
public class HPFactory extends AbstractFactory{
@Override
public NoteComputer createNoteComputer() {
return new HPNoteComputer();
}
@Override
public DeskComputer createDeskComputer() {
return new HPDeskComputer();
}
}
5.测试
AbstractFactory factory = new DellFactory();
factory.createDeskComputer().start();
factory.createNoteComputer().start();