多态在简单工厂模式中的应用
多态允许不同类的对象对同一消息做出响应,通过父类引用指向子类对象实现动态绑定。简单工厂模式利用多态将对象的创建与使用分离,提升代码灵活性和可维护性。
代码示例分析
以下代码展示了简单工厂模式中多态的核心实现:
public class PetStore { public static Animal getAnimal(String petName) { Animal an = null; if ("猫".equals(petName)) { an = new Cat(); } if ("狗".equals(petName)) { an = new Dog(); } if ("猪".equals(petName)) { an = new Pig(); } return an; } }多态体现的关键点
工厂方法返回类型为父类Animal,实际返回的是具体子类(Cat/Dog/Pig)的实例。客户端通过统一接口操作不同对象:
Animal animal = PetStore.getAnimal("猪"); girl.play(animal); // 无需关心具体动物类型典型应用场景
- 对象创建逻辑集中化:将分支判断逻辑封装在工厂中,避免客户端代码冗余
- 系统扩展性:新增动物类型只需修改工厂类,客户端代码无需变动
- 接口统一:所有动物对象通过父类
Animal的接口被访问,实现行为多态
设计优势
- 降低耦合度:客户端与具体实现类解耦
- 符合开闭原则:对扩展开放,对修改关闭
- 类型安全:编译时检查替代运行时错误
注意事项
- 工厂类通常设计为静态方法或单例模式
- 当产品种类过多时,考虑使用工厂方法模式替代
- 字符串参数可替换为枚举类型提升安全性
这种模式在需要动态创建相似对象的场景中广泛应用,如支付系统、日志记录器等需要灵活切换实现的场合。