# design-pattern-demo **Repository Path**: x_robot/design-pattern-demo ## Basic Information - **Project Name**: design-pattern-demo - **Description**: JAVA 设计模式实例 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-15 - **Last Updated**: 2024-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Java设计模式是解决常见问题的最佳实践总结,它们被广泛应用于软件开发中以提高代码的可重用性、灵活性和可维护性。Java中常用的设计模式包括23种经典设计模式,这些模式可以分为三大类:创建型模式、结构型模式和行为型模式。 ### 一、创建型模式(Creational Patterns) 创建型模式关注对象的创建过程,将对象的创建和使用分离,以提高系统的灵活性和可扩展性。主要包括以下几种: 1. **单例模式(Singleton)** - **功能**:确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 - **应用场景**:配置文件的读取、数据库连接池等。 2. **工厂方法模式(Factory Method)** - **功能**:定义一个用于创建对象的接口,让子类决定实例化哪个类。 - **应用场景**:创建对象的过程复杂、需要依赖具体实现时。 3. **抽象工厂模式(Abstract Factory)** - **功能**:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。 - **应用场景**:系统需要独立于产品的创建、组合和表示时。 4. **建造者模式(Builder)** - **功能**:将一个复杂对象分解成多个简单部分,然后逐步构建。 - **应用场景**:构建复杂对象时,其构建过程需要精确控制。 5. **原型模式(Prototype)** - **功能**:通过复制现有的实例来创建新的实例。 - **应用场景**:对象创建成本较高、需要频繁创建和销毁对象时。 ### 二、结构型模式(Structural Patterns) 结构型模式关注如何组合类和对象以形成更大的结构,主要用于处理类和对象的组合。主要包括以下几种: 1. **适配器模式(Adapter)** - **功能**:将一个类的接口转换成另一个接口,使原本不兼容的类可以一起工作。 - **应用场景**:旧系统升级、使用第三方库等。 2. **桥接模式(Bridge)** - **功能**:将抽象与实现分离,使它们可以独立变化。 - **应用场景**:抽象和具体实现经常需要变化时。 3. **组合模式(Composite)** - **功能**:将对象组合成树形结构以表示部分-整体层次结构。 - **应用场景**:表示对象的部分-整体层次结构时。 4. **装饰器模式(Decorator)** - **功能**:动态地给对象增加一些额外的职责。 - **应用场景**:需要扩展对象功能,但又不想使用继承时。 5. **外观模式(Facade)** - **功能**:为复杂子系统提供一个简单的接口。 - **应用场景**:简化复杂系统的访问,隐藏子系统细节。 6. **享元模式(Flyweight)** - **功能**:运用共享技术来有效支持大量细粒度对象的复用。 - **应用场景**:对象数量庞大且创建成本较高时。 7. **代理模式(Proxy)** - **功能**:为其他对象提供一种代理以控制访问。 - **应用场景**:远程代理、虚拟代理、安全代理等。 ### 三、行为型模式(Behavioral Patterns) 行为型模式关注对象之间的通信,主要用于描述程序在运行时复杂的控制流程。主要包括以下几种: 1. **模板方法模式(Template Method)** - **功能**:定义一个算法骨架,将某些步骤延迟到子类中实现。 - **应用场景**:算法骨架不变,具体步骤可变时。 2. **策略模式(Strategy)** - **功能**:定义一系列算法,并将它们封装起来,使它们可以相互替换。 - **应用场景**:算法家族、多种算法可互换时。 3. **命令模式(Command)** - **功能**:将请求封装为对象,使请求发送者和接收者解耦。 - **应用场景**:请求发送者和接收者需要解耦时。 4. **职责链模式(Chain of Responsibility)** - **功能**:将请求沿链传递,直到找到处理者。 - **应用场景**:请求处理者不明确或动态变化时。 5. **状态模式(State)** - **功能**:允许对象在内部状态改变时改变其行为。 - **应用场景**:对象行为随状态改变而变化时。 6. **观察者模式(Observer)** - **功能**:当一个对象变化时,通知所有依赖它的对象。 - **应用场景**:对象间存在一对多依赖关系时