设计模式,Design Patterns
封面图
•
2025-11-14
•
设计模式
311
0
0
0
“设计模式”(Design Patterns)是软件工程中一种**可重用的解决方案**,用于在特定场景下解决常见的设计问题。它们不是具体的代码或库,而是一种**抽象的设计思想**,指导开发者如何组织和设计代码结构,使其更灵活、可维护、可扩展。 --- ## 🧠 一、什么是设计模式? 设计模式是**经验总结**,由 **GoF(Gang of Four,四人组)** 在 1994 年出版的《设计模式:可复用面向对象软件的基础》一书中首次系统化提出。他们总结了 **23 种经典设计模式**。 --- ## 📚 二、设计模式的分类 根据用途,设计模式可以分为三类: ### 1. **创建型模式(Creational Patterns)** - 关注对象的**创建机制**,隐藏对象创建的复杂性。 - 常见模式: - 单例模式(Singleton) - 工厂模式(Factory Method) - 抽象工厂模式(Abstract Factory) - 建造者模式(Builder) - 原型模式(Prototype) ### 2. **结构型模式(Structural Patterns)** - 关注对象和类之间的**组合方式**,以形成更大的结构。 - 常见模式: - 适配器模式(Adapter) - 桥接模式(Bridge) - 组合模式(Composite) - 装饰器模式(Decorator) - 外观模式(Facade) - 享元模式(Flyweight) - 代理模式(Proxy) ### 3. **行为型模式(Behavioral Patterns)** - 关注对象之间的**交互与职责分配**。 - 常见模式: - 责任链模式(Chain of Responsibility) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器模式(Iterator) - 中介者模式(Mediator) - 备忘录模式(Memento) - 观察者模式(Observer) - 状态模式(State) - 策略模式(Strategy) - 模板方法模式(Template Method) - 访问者模式(Visitor) --- ## ✅ 三、为什么学习设计模式? - **提高代码质量**:使代码更清晰、可读、可维护。 - **提升开发效率**:避免重复劳动,使用成熟方案。 - **增强可扩展性**:让系统更容易适应变化。 - **促进团队协作**:统一术语,便于沟通。 --- ## 🧩 四、常见设计模式示例 ### 1. **单例模式(Singleton)** ```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 Method)** ```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"); } } abstract class ShapeFactory { abstract Shape createShape(String shapeType); } class ShapeFactoryImpl extends ShapeFactory { public Shape createShape(String shapeType) { if (shapeType.equalsIgnoreCase("RECT")) { return new Rectangle(); } else if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } return null; } } ``` > 将对象的创建过程封装到工厂类中,解耦客户端代码。 --- ### 3. **观察者模式(Observer)** ```java import java.util.*; interface Observer { void update(String message); } class MySubject { 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); } } } class MyObserver implements Observer { public void update(String message) { System.out.println("Received: " + message); } } ``` > 一对多的依赖关系,当一个对象状态改变时,所有依赖它的对象都会被通知。 --- ## 📘 五、推荐学习资源 - 书籍: - 《设计模式:可复用面向对象软件的基础》(GoF) - 《Head First 设计模式》 - 《重构:改善既有代码的设计》 - 网站: - [Refactoring Guru](https://refactoring.guru/design-patterns) - [Wikipedia - Design Pattern](https://en.wikipedia.org/wiki/Design_pattern_(computer_science)) --- ## 💬 六、小结 | 类型 | 作用 | 示例 | |------------|------------------------------|------------------| | 创建型 | 对象创建 | 单例、工厂 | | 结构型 | 对象组合 | 适配器、装饰器 | | 行为型 | 对象交互 | 观察者、策略 | --- 如果你有具体的编程语言(如 Java / Python / C++)或应用场景(如 Web 开发、游戏开发等),我可以为你推荐适合的设计模式并给出详细示例 😊
下一篇:
什么是REST接口
标题录入,一次不能超过6条
留言
评论