工厂模式用于建立对象时,有简单工厂,工厂方法、抽象工厂。数据库
简单工厂:由一个工厂对象决定建立哪一个实例的对象。简单工厂适用于建立对象少的场景,客户端只须要传入参数,对于如何建立不用关心。缓存
缺点:工厂类职责太重,不易于扩展复杂结构的实例对象,不符合开闭原则。性能
工厂方法:是指定义一个建立对象的接口,各个不一样对象都有分别的工厂类来实现,让实例化这个接口的类来决定实例化哪一个类,工厂方法让类的实例化推迟到子类中进行。对象
在工厂方法模式中,用户只需关注建立的接口
对象在哪一个工厂中,不需知道建立细节,符合开闭原则。产品
抽象工厂:是指提供一个建立一系列相关或相互依赖的对象的接口,适合使用与相似于二维的、比较复杂的场景。好比场景可分为产品族、产品等级结构两个维度的场景。扩展
将两个维度的相关类分别建立接口,并分别实现。每一个产品族都须要一个工厂。方法
优势:很清晰的描述了这样复杂场景。数据
缺点:不符合开闭原则、增长了系统的抽象性与理解难度。(只要不是系统频繁升级,能够不知足开闭原则。好比隔半年、一年客户端
应用:在JDBC链接数据库时就用到了抽象工厂,以前在每次使用时都要建立数据库链接,每次建立都十分耗费性能,影响业务调用时间。用了以后,它将数据
库链接建立好以后放到缓存中缓存者,在每次业务调用时只需现取现用。