跳到主要内容

工厂方法

Intro 简介

工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

特点

工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现客户端的操作,也会存在着选择判断的问题,不过和简单工厂相比,简单工厂的选择判断是在工厂内部,而工厂方法则将选择判断转移到了客户端。

ILeifengFactory factory = new UndergraduteFactory();
var studentLeifeng = factory.CreateLeifeng();
studentLeifeng.BuyRice();

factory = new VolunteerFactory();
var leifeng1 = factory.CreateLeifeng();
leifeng1.Sweep();

工厂方法模式的优点

  1. 遵循了开放封闭原则,当需要增加新产品时,只需要添加对应的工厂类即可,不需要修改已有代码,符合面向对象的设计思想。
  2. 通过工厂方法,客户端可以避免直接创建对象,降低了客户端与具体产品的耦合度,提高了代码的可维护性和扩展性。
  3. 工厂方法将具体产品的创建推迟到了子类中,实现了代码的复用,提高了代码的灵活性。

工厂方法模式的缺点

  1. 工厂方法模式增加了系统的抽象性和理解难度,需要理解抽象工厂和具体工厂之间的关系,对于初学者来说可能会比较困难。
  2. 工厂方法模式在增加新产品时需要增加对应的工厂类,会增加系统的复杂度。

工厂方法模式的应用场景

  1. 当一个类不知道它所需要的对象的类时,可以使用工厂方法模式来实现。
  2. 当一个类希望由它的子类来指定所创建的对象时,可以使用工厂方法模式来实现。
  3. 当一个类需要将具体的创建工作延迟到其子类中完成,可以使用工厂方法模式来实现。
  4. 当一个类需要创建一些相关的对象,并指定其具体类时,可以使用工厂方法模式来实现。

总结

工厂方法模式是一种常用的设计模式,它通过将具体产品的创建推迟到子类中,实现了代码的复用和灵活性。在实际开发中,可以根据具体的情况选择使用工厂方法模式,以提高代码的可维护性和扩展性。