抽象工厂模式简介
- 模式属于创建型模式,它提供了一种创建对象的最佳方式。
- 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
- 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
//电脑产品接口
public interface IComputerProduct {
void start();
void shutdown();
}
子类AComputer和BComputer
//A电脑
public class AComputer implements IComputerProduct {
@Override
public void start() {
System.out.println("开启A电脑");
}@Override
public void shutdown() {
System.out.println("关闭A电脑");
}
}//B电脑
public class BComputer implements IComputerProduct {
@Override
public void start() {
System.out.println("开启B电脑");
}@Override
public void shutdown() {
System.out.println("关闭B电脑");
}
}
接口ITVProduct
//电视机产品接口
public interface ITVProduct {
void start();
void shutdown();
}
子类ATV和BTV
//A电视
public class ATV implements ITVProduct {
@Override
public void start() {
System.out.println("开启A电视");
}@Override
public void shutdown() {
System.out.println("关闭A电视");
}
}//B电视
public class BTV implements ITVProduct {
@Override
public void start() {
System.out.println("开启B电视");
}@Override
public void shutdown() {
System.out.println("关闭B电视");
}
}
接口IProductFactory
//抽象产品工厂
public interface IProductFactory {
//生产电脑
IComputerProduct iComputerProduct();
//生产电视
ITVProduct itvProduct();
}
子类AFactory和BFactory
public class AFactory implements IProductFactory {
@Override
public IComputerProduct iComputerProduct() {
return new AComputer();
}@Override
public ITVProduct itvProduct() {
return new ATV();
}
}public class BFactory implements IProductFactory {
@Override
public IComputerProduct iComputerProduct() {
return new BComputer();
}@Override
public ITVProduct itvProduct() {
return new BTV();
}
}
测试类
public class Test {
public static void main(String[] args) {
AFactory aFactory = new AFactory();
//A工厂
IComputerProduct iComputerProduct = aFactory.iComputerProduct();
//A工厂电脑产品
iComputerProduct.start();
iComputerProduct.shutdown();
ITVProduct itvProduct = aFactory.itvProduct();
//A工厂电视产品
itvProduct.start();
itvProduct.shutdown();
BFactory bFactory = new BFactory();
//B工厂
iComputerProduct = bFactory.iComputerProduct();
//B工厂电脑产品
iComputerProduct.start();
iComputerProduct.shutdown();
itvProduct = bFactory.itvProduct();
//B工厂电视产品
itvProduct.start();
itvProduct.shutdown();
/**
* 输出结果:
* 开启A电脑
* 关闭A电脑
* 开启A电视
* 关闭A电视
* 开启B电脑
* 关闭B电脑
* 开启B电视
* 关闭B电视
*/
}
}
测试结果
开启A电脑
关闭A电脑
开启A电视
关闭A电视
开启B电脑
关闭B电脑
开启B电视
关闭B电视
推荐阅读
- 设计模式【15】--从审批流中学习责任链模式
- 设计模式【14】-- 从智能音箱中学习命令模式
- 设计模式——工厂方法模式(创建型模式)
- Java中的桥接模式
- Java中的适配器模式
- Java中的原型模式
- Java中的工厂模式
- Java中的单例模式
- Java设计模式|Java设计模式-单例模式