设计模式简介
封面图
•
2025-11-06
•
设计模式
0
0
0
0
设计模式(Design Pattern)是软件工程中用于解决常见设计问题的**可复用的解决方案**。它们不是具体的代码,而是**在特定情境下如何组织代码结构、管理对象交互和提高系统可维护性的最佳实践**。 --- ## 一、设计模式的基本概念 ### 1. **什么是设计模式?** 设计模式是对**软件设计中反复出现的问题**的一种通用解决方案。它描述了**类或对象之间的交互方式**,帮助开发者构建更清晰、灵活和易于维护的系统。 ### 2. **为什么需要设计模式?** - 提高代码的**可读性**和**可维护性** - 促进**代码重用** - 增强系统的**灵活性**和**可扩展性** - 使团队成员之间有**统一的沟通语言** --- ## 二、设计模式的分类(GoF 设计模式) 经典的 **23 种设计模式** 被分为三大类: | 类别 | 说明 | 举例 | |------|------|------| | **创建型模式(Creational)** | 关注对象的创建方式,隐藏对象创建的复杂性 | 工厂模式、单例模式、建造者模式、原型模式、抽象工厂模式 | | **结构型模式(Structural)** | 关注类和对象的组合方式,以形成更大的结构 | 适配器模式、装饰器模式、代理模式、外观模式、组合模式等 | | **行为型模式(Behavioral)** | 关注对象之间的职责划分和通信方式 | 观察者模式、策略模式、命令模式、状态模式、访问者模式等 | --- ## 三、常用设计模式简介 ### 1. **单例模式(Singleton)** - **目的**:确保一个类只有一个实例,并提供一个全局访问点。 - **适用场景**:数据库连接、日志记录器、配置管理等。 - **示例代码(Java)**: ```java public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` ### 2. **工厂模式(Factory)** - **目的**:将对象的创建与使用分离,提高系统的灵活性。 - **适用场景**:当对象的创建逻辑复杂时。 - **示例代码(Java)**: ```java interface Shape { void draw(); } class Rectangle implements Shape { public void draw() { System.out.println("Rectangle"); } } class Circle implements Shape { public void draw() { System.out.println("Circle"); } } class ShapeFactory { public Shape getShape(String shapeType) { if (shapeType == null) return null; if (shapeType.equalsIgnoreCase("RECTANGLE")) return new Rectangle(); if (shapeType.equalsIgnoreCase("CIRCLE")) return new Circle(); return null; } } ``` ### 3. **观察者模式(Observer)** - **目的**:定义对象间的一对多依赖关系,当一个对象改变状态时,所有依赖它的对象都会收到通知并自动更新。 - **适用场景**:事件处理系统、消息推送、UI 更新等。 - **示例代码(Java)**: ```java interface Observer { void update(String message); } class Subject { private List<Observer> observers = new ArrayList<>(); public void addObserver(Observer o) { observers.add(o); } public void notifyObservers(String message) { for (Observer o : observers) { o.update(message); } } } ``` ### 4. **策略模式(Strategy)** - **目的**:定义一系列算法,把它们封装起来,并且使它们可以互相替换。 - **适用场景**:算法变化频繁、需要动态切换算法的情况。 - **示例代码(Java)**: ```java interface Strategy { int doOperation(int a, int b); } class OperationAdd implements Strategy { public int doOperation(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.doOperation(a, b); } } ``` --- ## 四、设计模式的优缺点 ### ✅ 优点: - 提高代码的可维护性和可扩展性 - 降低模块间的耦合度 - 提高开发效率,减少重复劳动 ### ❌ 缺点: - 学习曲线较陡,初学者可能难以理解 - 过度使用设计模式可能导致系统复杂化 - 不适合简单问题,可能造成“过度设计” --- ## 五、总结 设计模式是**经验的结晶**,它们并不是万能的,但合理使用可以显著提升软件质量。掌握常见的设计模式有助于你写出更优雅、更健壮的代码。 如果你对某个具体的设计模式感兴趣,我可以为你详细讲解!
上一篇:
网站前端开发包含那些内容?
下一篇:
设计模式 - 工厂模式
标题录入,一次不能超过6条
留言
评论