--- title: 设计模式 date: 2023-01-03 10:11:47 author: 文永达 --- # 设计模式 ## 工厂模式 ### 概述 该模式用来封装和管理类的创建,终极目的是为了解耦,实现创建者和调用者的分离。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式可以细分为三种: **简单工厂模式** **工厂方法模式** **抽象工厂模式** ### 传统模式 创建不同种类的pizza对象 ```java Pizza orderPizza(String type) { Pizza pizza; if(type.equals("chess"){ pizza = new ChessPizza(); }else if(type.equals("greek"){ pizza = new GreekPizza(); }else if(type.equals("apple"){ pizza = new ApplePizza(); } .... //准备材料 pizza.prepare(); //烘烤 pizza.bake(); //切 pizza.cut(); //装盒 pizza.box(); return pizza; } ``` ### 简单工厂模式 在传统模式中直接让调用者去创建对象。但是,假如创建对象的过程比较复杂,我们可以将其交由一个新的类来创建,这种类叫工厂类,调用者只需要调用这个类的函数来创建对象就行了,无需再书写创建对象。 ```java public class SimpleFactory { public static Pizza createPizza(String pizzaType){ Pizza pizza = null; System.out.println("使用了简单工厂模式"); if (pizzaType.equals("greek")) { pizza = new GreekPizza(); pizza.setName("greek"); } else if (pizzaType.equals("chess")) { pizza = new ChessPizza(); pizza.setName("chess"); } else if (pizzaType.equals("pepper")) {//新增PepperPizza的时候 修改了源代码 违反了ocp原则 如果新增10000个? //那就很麻烦了 pizza = new PepperPizza(); pizza.setName("pepper"); } return pizza; } } ``` ###