工厂类Factory中含有必要的判断逻辑,决定创建具体产品类ConcreteProduct的实例,客户端只需要消费产品
客户端不需要知道需要创建的具体产品类ConcreteProduct的类名,只需要知道具体产品类...Product类型的实例
工厂实现类ConcreteFactory中包含与客户端密切相关的逻辑,并且被客户端调用来创建具体的产品实例
抽象产品类Product:
工厂方法模式创建的具体产品类的父类,定义类具体产品中共有的方法...: 工厂方法模式中,客户端不知道具体产品类的类名,只知道具体的产品对象由哪一个具体工厂实现来创建....可以将具体工厂类的类名存储在配置文件或者数据库中
工厂方法模式的使用场景示例:
日志记录器: 日志可以记录到本地磁盘,系统事件,远程服务器等等,用户可以选择日志记录的位置
数据库访问: 当用户不知道最后系统采用哪一类数据库时...,这样会增加系统的开销
可以将一些相关的产品组成一个产品族,由同一个工厂来统一生产
产品族: 位于不同产品等级结构中功能相关联的产品组成的家族
抽象工厂模式与工厂方法模式区别:
抽象工厂模式:
抽象工厂模式是针对多个产品的等级结构