工厂模式是创建型模型的一种,主要优势在于程序的解耦性和高扩展性。在工厂模式中有三类角色。
- 抽象产品角色:所有具体产品角色的父类,它负责描述所有实例的公共接口。一般使用抽象类或接口实现。
- 具体产品角色:由工厂类负责创建的不同的产品实例。
- 工厂类角色: 工厂类角色是工厂模式的核心,他负责实现创建所有的具体产品类实例。工厂类可以被外界直接调用,创建所需的产品对象,一般由某个具体的类实现。
比如对于一个电脑而言,usb口要识别外部设备,需要对当前插入设备的信息进行判断,那么定义抽象产品角色的抽象接口Usb,其中包含抽象方法showType();而对于每个具体产品对象(鼠标、键盘、打印机)实现抽象接口usb,并定义自己独特的showType()方法。最后,定义核心工厂类角色(Factory),此类用于根据需求提供对应实体类型的对象。实现规范化管理,可扩展性好。