【设计模式】常用的设计模式详解

发布于:2025-03-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

常用设计模式介绍

设计模式的分类

创建型模式(Creational):关注对象的实例化过程,包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。
结构型模式(Structural):关注对象之间的组合方式,以达到构建更大结构的目标。这些模式帮助你定义对象之间的关系,从而实现更大的结构。常见的结构型模式有适配器模式、装饰器模式、代理模式等。
行为型模式(Behavioral):关注对象之间的通信方式,以及如何合作共同完成任务。这些模式涉及到对象之间的交互、责任分配等。常见的行为型模式有观察者模式、策略模式、命令模式等。

工厂模式

工厂模式

1.场景介绍

设计一个运算方法,可以运算两个数的加减乘除等运算
思维:页面与业务分离开,加减乘除独立,方便后续有其他算法加入时不受影响

案例代码

1.运算类

package org.example.model.factory;


public class Compute {

    private int numA;

    private int numB;

    public int getNumA() {
        return numA;
    }

    public void setNumA(int numA) {
        this.numA = numA;
    }

    public int getNumB() {
        return numB;
    }

    public void setNumB(int numB) {
        this.numB = numB;
    }

    public int getResult(int numA,int numB){
        return 0;
    }
}

2.加法类

package org.example.model.factory;

public class OperaAdd extends Compute{
    @Override
    public int getResult(int numA,int numB) {
        return numA + numB;
    }
}

3.减法类

package org.example.model.factory;

public class OperaReduce extends Compute{
    @Override
    public int getResult(int numA,int numB) {
        return numA - numB;
    }
}

4.乘法类

package org.example.model.factory;

public class OperaMul extends Compute{

    @Override
    public int getResult(int numA,int numB) {
        return numA * numB;
    }
}

5.除法类

package org.example.model.factory;

public class OperaDiv extends Compute{
    @Override
    public int getResult(int numA,int numB) {
        if (numB != 0){
            return numA / numB;
        }else {
            throw new RuntimeException("除数不能为0");
        }
    }
}

6.工厂类

package org.example.model.factory;

public class OperaFactory {

    public static Compute createCompute(String opera){
        Compute c = null;
        switch (opera){
            case "+":
                c = new OperaAdd();
                break;
            case "-":
                c = new OperaReduce();
                break;
            case "*":
                c = new OperaMul();
                break;
            case "/":
                c = new OperaDiv();
                break;
        }
        return c;
    }
}

7.测试

package org.example.model.factory;

public class TestDemo {
    public static void main(String[] args) {
        Compute c = OperaFactory.createCompute("+");
        int result = c.getResult(3,8);
        System.out.println(result);
    }
}

8.输出结果
在这里插入图片描述

参考链接

参考书籍:《大话设计模式》
参考博客:
Java开发者必备:23种设计模式全面解析
23种设计模式(Java版,超详细!)