NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
[TOC] ## 设计模式 ### 一、创建型(Creational Patterns) 👉 关注 **对象的创建**,让系统与对象的创建过程解耦。 1. **单例模式(Singleton)** * **作用**:保证一个类只有一个实例,并提供全局访问点。 * **应用**:配置管理、日志、数据库连接池。 2. **工厂方法模式(Factory Method)** * **作用**:定义创建对象的接口,让子类决定实例化哪个类。 * **应用**:多种产品族时,比如不同数据库的连接驱动。 3. **抽象工厂模式(Abstract Factory)** * **作用**:提供一个创建一系列相关对象的接口,而无需指定它们的具体类。 * **应用**:跨平台 UI(WindowsButton / MacButton)。 4. **建造者模式(Builder)** * **作用**:将复杂对象的创建与表示分离,让同样的创建过程可以生成不同的表示。 * **应用**:生成复杂报表、组装汽车。 5. **原型模式(Prototype)** * **作用**:通过复制现有对象来创建新对象,而不是通过 new。 * **应用**:对象创建开销大时,比如游戏中的怪物克隆。 * * * ### 二、结构型(Structural Patterns) 👉 关注 **类与对象的组合**,让系统更灵活。 1. **适配器模式(Adapter)** * **作用**:将一个类的接口转换成客户端期望的另一种接口。 * **应用**:新旧系统接口不兼容时。 2. **桥接模式(Bridge)** * **作用**:将抽象部分与实现部分分离,使它们可以独立变化。 * **应用**:不同品牌手机 + 不同操作系统的组合。 3. **装饰者模式(Decorator)** * **作用**:动态地为对象添加额外功能,而不修改其结构。 * **应用**:IO 流的包装(BufferedReader 包装 InputStreamReader)。 4. **组合模式(Composite)** * **作用**:将对象组合成树形结构,使得客户端对单个对象和组合对象的使用一致。 * **应用**:文件系统目录结构。 5. **外观模式(Facade)** * **作用**:对外提供一个统一接口,简化系统的复杂性。 * **应用**:数据库操作封装成简单 API。 6. **享元模式(Flyweight)** * **作用**:共享对象,减少内存消耗。 * **应用**:文字处理器中相同字符的复用。 7. **代理模式(Proxy)** * **作用**:通过代理控制对象的访问。 * **应用**:远程代理、权限控制、缓存。 * * * ### 三、行为型(Behavioral Patterns) 👉 关注 **对象之间的交互与职责分配**。 1. **观察者模式(Observer)** * **作用**:对象状态变化时,通知依赖它的对象。 * **应用**:订阅-发布模型,事件监听。 2. **策略模式(Strategy)** * **作用**:定义一系列算法,封装起来,让它们可互换。 * **应用**:不同的支付方式(支付宝 / 微信 / 信用卡)。 3. **命令模式(Command)** * **作用**:将请求封装成对象,使得请求可参数化、可撤销。 * **应用**:事务回滚,操作撤销(Undo)。 4. **责任链模式(Chain of Responsibility)** * **作用**:将请求沿链传递,直到有对象处理它。 * **应用**:日志处理、过滤器链。 5. **状态模式(State)** * **作用**:对象在不同状态下有不同行为。 * **应用**:订单状态(待付款 → 已付款 → 已发货)。 6. **模板方法模式(Template Method)** * **作用**:定义算法骨架,子类重写部分步骤。 * **应用**:算法框架,数据处理流程。 7. **迭代器模式(Iterator)** * **作用**:提供一种顺序访问聚合对象元素的方法,而不暴露内部表示。 * **应用**:Java 的 `Iterator`。 8. **中介者模式(Mediator)** * **作用**:用一个中介对象封装对象之间的交互,避免对象间过度耦合。 * **应用**:聊天室(用户不直接通信,而通过服务器)。 9. **备忘录模式(Memento)** * **作用**:保存对象的内部状态,以便以后恢复。 * **应用**:游戏存档。 10. **解释器模式(Interpreter)** * **作用**:定义语言的语法规则,并解释句子。 * **应用**:正则表达式、SQL 解析器。 11. **访问者模式(Visitor)** * **作用**:在不改变对象结构的情况下,增加新的操作。 * **应用**:编译器语法树遍历。