工厂模式
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
主要解决接口实现的选择问题。
使用场景:
- 日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。
- 数据库访问:当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。如果要更换数据库,只需要更换方言驱动即可。
优点:
- 一个调用者想创建一个对象,只要知道其名称就可以了。
- 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
- 屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:
- 增加了系统复杂度
实现:
一个接口,有若干个实现类。用一个工厂类,按照名称new出对应的实现类的实例。工厂类的创建方法返回类型是该接口,入参是类似名称的参数。根据这个名称return对应的实例。