Factory设计模式之抽象工厂
Demo地址
https://github.com/rocky123shine/AbsFactory180417
概念
定义一个用于创建对象的统一的接口,然后由子类去实现。工厂模式分为简单工厂和抽象工厂。本文将对抽象工厂做个简单的了解和使用。
抽象工厂给客户端提供一个接口,可以创建多个产品族中的产品对象。
AbsFactory使用条件
1.系统中有多个产品族,而系统一次只可能消费其中一族产品
2.同属于同一个产品族的产品以其使用
AbsFactory实现和使用
AbsFactory实现
- 两个抽象类,AbsFactory和AbsObject
- AbsFactory中提供创建对象的方法并且返回AbsObject
- AbsObject中提供对象通用的方法
- 具体的Object实现,具体的对象的功能模块的抽象和实现
- 具体的工厂实现
- 创建具体的工厂和对象类
AbsFactory使用
AbsFactory factory = new BaiDuFactory();
AbsMapView mapView = factory.createMapView();
AbsMapLocation mapLocation = factory.createMapLocation();
AbsMapNavigation mapNavigation = factory.createMapNavigation();
mapNavigation.turnByTurn();
mapLocation.location();
Factory实际应用举例
例如在开发中 我们呀开发地图模块,其中有百度地图,高德地图,谷歌地图等可供用户选择。在选择的过程中就需要实现不同地图间的切换。如果我们使用工厂模式,那么无论以后再增加其他地图,只要我们换一下具体对象就 能轻松实现,代码的扩展性可维护性大大提高,此时如果在加上地图的定位和导航功能 简单工厂明显不够用,这时候 抽象工厂就是很好的选择