0

0

Java设计模式应用 Java实现23种设计模式的代码示例

看不見的法師

看不見的法師

发布时间:2025-07-16 17:42:02

|

398人浏览过

|

来源于php中文网

原创

设计模式应用是为了解决编程中常见问题,提升代码可维护性与扩展性,1.策略模式用于动态切换算法,如电商折扣策略;2.工厂模式封装对象创建,适用于动态生成不同数据库连接;3.单例模式确保全局唯一实例,适合配置管理器等场景;设计模式强调架构复用而非单纯代码复用,掌握需结合实践,避免过度设计。

Java设计模式应用 Java实现23种设计模式的代码示例

Java设计模式应用?简单来说,就是用前辈们总结出来的经验,解决我们编程中遇到的各种常见问题,让代码更优雅、可维护、可扩展。而这23种设计模式,就是工具箱里最常用的工具。

Java设计模式应用 Java实现23种设计模式的代码示例

直接上代码示例,别跟我说理论,直接看怎么用!

策略模式:让算法可以灵活切换

策略模式的核心在于定义一系列算法,并将每一个算法封装起来,使它们可以相互替换。这使得算法可以在客户端独立于其使用而变化。

立即学习Java免费学习笔记(深入)”;

Java设计模式应用 Java实现23种设计模式的代码示例
// 策略接口
interface Strategy {
    int execute(int a, int b);
}

// 具体策略:加法
class ConcreteStrategyAdd implements Strategy {
    @Override
    public int execute(int a, int b) {
        return a + b;
    }
}

// 具体策略:减法
class ConcreteStrategySubtract implements Strategy {
    @Override
    public int execute(int a, int b) {
        return a - b;
    }
}

// 环境类
class Context {
    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int a, int b) {
        return strategy.execute(a, b);
    }
}

// 使用示例
public class StrategyExample {
    public static void main(String[] args) {
        Context context = new Context(new ConcreteStrategyAdd());
        System.out.println("10 + 5 = " + context.executeStrategy(10, 5));

        context = new Context(new ConcreteStrategySubtract());
        System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
    }
}

这个例子展示了如何使用策略模式来动态地选择加法或减法运算。 想象一下,如果你的电商系统需要根据不同的用户等级应用不同的折扣策略,策略模式就非常适合了。

工厂模式:创建对象的最佳实践

工厂模式提供了一种创建对象的接口,但允许子类决定实例化哪个类。 它将对象的创建过程封装起来,使得客户端代码无需关心具体的对象创建细节。

Shoping购物网源码
Shoping购物网源码

该系统采用多层模式开发,这个网站主要展示女装的经营,更易于网站的扩展和后期的维护,同时也根据常用的SQL注入手段做出相应的防御以提高网站的安全性,本网站实现了购物车,产品订单管理,产品展示,等等,后台实现了动态权限的管理,客户管理,订单管理以及商品管理等等,前台页面设计精致,后台便于操作等。实现了无限子类的添加,实现了动态权限的管理,支持一下一个人做的辛苦

下载
Java设计模式应用 Java实现23种设计模式的代码示例
// 抽象产品接口
interface Product {
    void display();
}

// 具体产品 A
class ConcreteProductA implements Product {
    @Override
    public void display() {
        System.out.println("Product A");
    }
}

// 具体产品 B
class ConcreteProductB implements Product {
    @Override
    public void display() {
        System.out.println("Product B");
    }
}

// 抽象工厂
interface Factory {
    Product createProduct();
}

// 具体工厂 A
class ConcreteFactoryA implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

// 具体工厂 B
class ConcreteFactoryB implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

// 使用示例
public class FactoryExample {
    public static void main(String[] args) {
        Factory factoryA = new ConcreteFactoryA();
        Product productA = factoryA.createProduct();
        productA.display();

        Factory factoryB = new ConcreteFactoryB();
        Product productB = factoryB.createProduct();
        productB.display();
    }
}

这个例子展示了如何使用工厂模式来创建不同的产品。 如果你需要根据配置动态地创建不同类型的数据库连接,工厂模式会让你事半功倍。

单例模式:确保只有一个实例

单例模式确保一个类只有一个实例,并提供一个全局访问点。 这在需要共享资源或控制资源访问时非常有用。

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    public void doSomething() {
        System.out.println("Singleton is doing something.");
    }

    public static void main(String[] args) {
        Singleton singleton = Singleton.getInstance();
        singleton.doSomething();
    }
}

这里使用了双重检查锁机制来保证线程安全。 想象一下,你的应用需要一个全局唯一的配置管理器,单例模式就能派上用场。

为什么需要设计模式?代码复用还不够吗?

代码复用当然重要,但设计模式不仅仅是代码复用,它更关注的是架构层面的复用。设计模式提供的是一种解决问题的思路和框架,让你在面对相似问题时,能够快速找到合适的解决方案,并在此基础上进行定制。 就像盖房子,砖头可以复用,但设计图纸更重要。

掌握设计模式需要多久?

这取决于你的基础和学习方法。 如果你已经有一定的编程经验,并且愿意花时间去理解和实践,那么掌握常用的设计模式并不需要太长时间。 关键在于理解设计模式背后的思想,而不是死记硬背代码。 我个人建议是,先从常用的几个模式入手,比如单例、工厂、策略、观察者等,然后逐步深入学习其他模式。 实践是最好的老师,多在项目中应用,才能真正掌握设计模式。

设计模式会不会过度设计?

会的。过度设计是真实存在的风险。 重要的是要根据实际情况选择合适的设计模式,而不是为了使用设计模式而使用设计模式。 记住,设计模式是为了解决问题,而不是为了炫技。 简单来说,YAGNI (You Ain't Gonna Need It) 原则同样适用于设计模式。 不要过度设计,只在需要的时候才引入设计模式。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1155

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

213

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1919

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

22

2026.01.19

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

523

2023.08.10

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

411

2023.08.14

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

359

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2082

2023.08.14

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3万人学习

C# 教程
C# 教程

共94课时 | 8万人学习

Java 教程
Java 教程

共578课时 | 53.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号