在简单工厂模式中,使用一个工厂类来封装对象的实例化过程。客户端需要什么对象,就向该工厂类提供相应的参数,然后由工厂类创建对象并返回给客户端。
简单工厂模式的优点在于它的实现简单直观,客户端只需要知道需要什么对象,无需关心如何创建对象。缺点是客户端依赖于工厂类,如果需要新增一种产品类型,就需要修改工厂类的代码,违反了开闭原则。
以卖披萨为例,简单工厂模式实现如下:
/* * 2.简单工厂方法:希望能够创建一个对象,但创建过程比较复杂,希望对外隐藏这些细节 */ public class SimpleFactory { public static Pizza createPizza(String type){ Pizza pizza=null; switch (type){ case "chicken": pizza=new ChickenPizza("鸡肉披萨"); break; case "dousha": pizza=new DouShaPizza("豆沙披萨"); break; case "pork": pizza=new PorkPizza("猪肉披萨"); case "beef": //老板拓展业务了,新加了一个牛肉类型的披萨,那对于简单工厂模式而言, //于是就得修改源代码,那么就违反了ocp原则,假如新增100个? pizza=new BeefPizza("牛肉披萨"); break; default: throw new IllegalArgumentException("Invalid Pizza Type"); } return pizza; } }
Test:
//2.简单工厂模式 @Test void simpleFactory(){ //以猪肉披萨为例 pizzapork = SimpleFactory.createPizza("pork"); pork.prepare(); pork.make(); pork.braise(); }
通过封装SimpleFactory这个类,我们将sale和pizza进行了解耦合。
本文固定URL:https://www.dotcpp.com/course/1356