【GoF 23】篇3:抽象工厂

1. 什么是抽象工厂?

提供一个创建一系列相关或互相依赖的对象接口,而无需指定它们的具体类。

抽象工厂是一个超级工厂,是其他工厂的工厂,或将简单工厂进一步抽象。

这样来理解:
我们将科技公司可以做的事情简要枚举出来,生产手机、电脑、路由器等等,比如小米、华为、联想等公司都可以生产这些产品。

这里,我们就可以将科技公司可以生产的产品全部在一个接口中枚举出来,这个接口就可以看作一个抽象工厂。而小米、华为、联想这些公司就是普通工厂。抽象工厂将普通工厂可以生产的产品进行抽象出来。

这里有两个概念:产品簇、产品级

  • 产品簇:或许称之为“产品系”会更便于理解,比如小米生产的手机、电脑都是小米系列的,这就是一个产品簇。
  • 产品级:或许称之为“产品类”会更便于理解,手机和手机就是一个产品级,它们都是同一类商品,都是手机。

2. 代码示例

  1. 定义普通工厂的抽象工厂
// 抽象工厂,抽象方法为科技公司可以生产的产品
public interface ProductFactory {

	// 可以生产手机,产品簇
	PhoneProduct phoneProduct();
	// 可以生产电脑,产品簇
	ComputerProduct computerProduct();

}
  1. 定义普通手机工厂
// 产品级
public interface PhoneFactory { ... }

  1. 定义普通电脑工厂
// 产品级
public interface ComputerFactory { ... }
  1. 定义小米生产手机
public class XiaoMiPhone implements PhoneFactory{ ... }
  1. 定义小米生产电脑
public class XiaoMiComputer implements ComputeFactory{ ... }
  1. 定义小米工厂,在这里实现抽象工厂
// 小米工厂要实现抽象工厂,抽象工厂就是将工厂可以做的事情抽象出来,具体行为由子工厂去定义
// 其实这里就是一个简单工厂,所以抽象工厂就是对简单工厂的抽象
public class XiaoMiFactory implements ProductFactory {
	// 小米可以生产手机
	public PhoneProduct phoneProduct(){
		return new XiaoMiPhone();// 在这里创建对象,但是具体行为在子类中
	}
	// 小米可以生产电脑
	public XiaoMiComputer xiaoMiComputer(){
		return new XiaoMiComputer();
	}
}
  1. 客户端
XiaoMiFactory xiaoMiFactory = new XiaoMiFactory();
xiaoMiFactory.phoneProduct();//创建手机的实例
xiaoMiFactory.xiaoMiComputer()//创建电脑的实例

3. 小结

抽象工厂的本质就是:选择产品簇的实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CODER-V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值