---
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;
    }
}
```



### 

