工厂方法模式是一种创建型设计模式,它将对象的创建委托给工厂类,从而通过工厂方法来创建对象。尽管工厂方法模式和其他几种创建型模式像抽象工厂模式、单例模式等都可以产生新对象,但工厂方法模式远不止这些。
下面我们从开闭原则、单一职责原则、依赖倒置原则、LSP原则和迪米特法则五个方面来分析工厂方法模式符合什么原则。
开闭原则
工厂方法模式符合开闭原则,开闭原则是指对扩展开放,对修改关闭。在工厂方法模式中,要添加一个新产品时,我们只需为新产品创建一个新的具体工厂类,这个具体工厂类负责创建新产品的对象。因此,对于新增加产品的需求,我们只需要增加一个新的具体工厂类对应即可,而不需要修改原有代码,从而符合了开闭原则。
单一职责原则
工厂方法模式也符合单一职责原则,单一职责原则是指一个类只负责一个职责。在工厂方法模式中,工厂类只负责产品对象的创建,而不涉及具体产品的业务逻辑,从而把对象的创建和业务逻辑分离,单一职责原则得到了很好的落实。
依赖倒置原则
工厂方法模式也符合依赖倒置原则,依赖倒置原则是指高层模块不应该依赖于低层模块,二者都应该依赖于抽象。在工厂方法模式中,高层客户端只依赖于抽象产品类,而抽象产品类又依赖于具体产品类,具体产品类实现了抽象产品类的接口,因此,高层客户端通过抽象产品类来间接与具体产品类交互,避免了高层模块和具体产品类之间的直接依赖关系,符合依赖倒置原则。
LSP原则
工厂方法模式也符合LSP原则,LSP原则是指子类能够替换父类,程序不会产生异常或者错误。在工厂方法模式中,具体产品类是抽象产品类的子类,因此在高层模块中任何时候都可以使用抽象产品类来代替具体产品类,而不会出错或者导致运行中断,从而符合LSP原则。
迪米特法则
工厂方法模式也符合迪米特法则,迪米特法则是指一个对象应该对其他对象有最少的了解。在工厂方法模式中,客户端通过抽象产品类和抽象工厂类来和具体产品类和具体工厂类打交道,从而客户端只和抽象类交互,不与具体类交互,客户端只需知道所需的具体工厂类名和抽象产品类名即可,不需要了解具体产品类的名字,大大降低了客户端的耦合度,符合迪米特法则。
综上所述,工厂方法模式符合了开闭原则、单一职责原则、依赖倒置原则、LSP原则和迪米特法则。通过使用工厂方法模式,我们可以消除产品类与客户端的耦合,增加代码的灵活性、可扩展性和可维护性,从而实现了高效率、高质量的代码设计和开发。
扫码咨询 领取资料