XiaowenBlog/source/_posts/设计模式.md
wenyongda faa5ff5430 docs: 为所有文章添加tags和categories元数据
为博客中的所有文章统一添加了tags和categories元数据,使用数组格式规范标签分类,便于文章分类管理和检索
2026-04-15 13:35:57 +08:00

2.0 KiB
Raw Blame History

title, date, author, tags, categories
title date author tags categories
设计模式 2023-01-03 10:11:47 文永达
设计模式
软件工程
工厂模式
架构
软件工程
设计模式

设计模式

工厂模式

概述

该模式用来封装和管理类的创建,终极目的是为了解耦,实现创建者和调用者的分离。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

工厂模式可以细分为三种:

简单工厂模式

工厂方法模式

抽象工厂模式

传统模式

创建不同种类的pizza对象

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

简单工厂模式

在传统模式中直接让调用者去创建对象。但是,假如创建对象的过程比较复杂,我们可以将其交由一个新的类来创建,这种类叫工厂类,调用者只需要调用这个类的函数来创建对象就行了,无需再书写创建对象。

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