init: 初始化 XiaowenBlog 博客项目,添加配置文件及技术文章
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
---
|
||||
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;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
###
|
||||
|
||||
Reference in New Issue
Block a user