Java学习第11天-抽象工厂模式
抽象工厂模式
- 需求
披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪pizza、
北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza。
- 传统模式
思路
使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、
LDPizzaSimpleFactory 等等.从当前这个案例来说,也是可以的,但是考虑到项目的
规模,以及软件的可维护性、可扩展性并不是特别好
类图
分析:
根据图中的线,就知道随着工厂越来越多,依赖会越来越复杂,即调用业务代码会越来越复杂,不符合开闭原则,
不利于业务扩展,维护性差;
- 抽象工厂模式
思路
将工厂抽象出来,订购客户端不随披萨地方、种类的变化而变化;将变化都交给抽象工厂,抽象工厂下放到具体的实现类中解决。
类图
分析:
抽象工厂模式,符合开闭原则,对提供发来说,可以扩展,对使用发来说,无需变化。
- 总结
当业务发展到,需要多个简单工厂来解决问题,而对订单客户端越来越复杂时,我们就
应该想到抽象工厂,通过抽象工厂来简化使用方的操作,将变化修改放到提供方内部解决。