大略介绍一遍设计模式,后续会在这个帖子更新设计模式案例场景,java
一、创建型模式(5种)
单例模式(Singleton)
实现:通过私有化构造函数、静态方法提供唯一实例,支持饿汉式、双重查抄锁、静态内部类等方式保证线程安全15。
场景:数据库毗连池、日志管理器、全局配置类等需唯一实例的场景。
工厂方法模式(Factory Method)
实现:定义抽象工厂接口,子类决定实例化具体类(如 ConcreteProductA 和 ConcreteProductB)53。
场景:框架中对象的创建(如Spring的BeanFactory)、动态加载不同数据库驱动。
抽象工厂模式(Abstract Factory)
实现:创建产品族的接口(如 GUIFactory 生成 Button 和 TextBox),支持跨平台兼容36。
场景:跨平台UI组件库(如Java AWT)、游戏引擎中不同风格的资源包。
建造者模式(Builder)
实现:分离复杂对象的构建与体现(如 AlertDialog.Builder),通过链式调用逐步组装对象36。
场景:创建复杂配置对象(如HTTP哀求配置)、生成不同格式的文档(HTML/PDF)。
原型模式(Prototype)
实现:通过克隆现有对象创建新实例(如Java的 Cloneable 接口)36。
场景:游戏中的角色复制、避免重复初始化高成本对象(如数据库毗连)。
二、结构型模式(7种)
适配器模式(Adapter)
实现:将不兼容接口转换为目标接口(如 Adapter 类包装 Adaptee)13。
场景:兼容旧系统接口、第三方库集成(如支付网关适配)。
桥接模式(Bridge)
实现:分离抽象与实现(如 Shape 抽象类与 DrawingAPI 接口解耦)36。
场景:跨平台图形渲染、消息通知渠道(短信/邮件/推送)的动态切换。
组合模式(Composite)
实现:树形结构同一处置处罚叶子与容器节点(如文件系统目次与文件)36。
场景:UI组件嵌套(如菜单与子菜单)、组织架构管理。
装饰器模式(Decorator)
实现:动态添加职责(如 BufferedReader 包装 FileReader 增加缓冲功能)35。
场景:Java I/O流扩展、Web中心件链(如日志、鉴权装饰器)。
外观模式(Facade)
实现:提供子系统同一入口(如 PaymentFacade 封装支付、通知等操作)36。
场景:简化复杂API调用(如电商下单流程)、微服务网关。
享元模式(Flyweight)
实现:共享细粒度对象(如字符缓存池、线程池)36。
场景:游戏中的粒子特效、文本编辑器中的字符重复使用。
署理模式(Proxy)
实现:控制对象访问(如远程署理、延迟加载署理)35。
场景:Spring AOP事件管理、图片懒加载、VPN访问控制。
三、行为型模式(11种)
观察者模式(Observer)
实现:定义一对多依靠(如 Subject 维护 Observer 列表并通知更新)25。
场景:变乱驱动系统(如按钮点击)、股票代价变动通知。
策略模式(Strategy)
实现:封装算法族并动态切换(如支付方式选择支付宝/微信)23。
场景:排序算法选择、优惠券计算规则(满减/扣头)。
模板方法模式(Template Method)
实现:定义算法骨架,子类重写步骤(如JUnit测试生命周期)23。
场景:工作流程标准化(如订单处置处罚)、框架中的钩子方法。
责任链模式(Chain of Responsibility)
实现:哀求沿处置处罚链传递(如 FilterChain 处置处罚HTTP哀求)36。
场景:审批流程(如报销审批)、非常处置处罚链。
下令模式(Command)
实现:封装哀求为对象(如 Runnable 接口)36。
场景:撤销/重做操作、使命队列调理。
迭代器模式(Iterator)
实现:提供遍历聚合对象的方法(如Java集合的 Iterator)23。
场景:自定义集合遍历、数据库查询结果分页。
中介者模式(Mediator)
实现:集中管理对象交互(如聊天室调和用户消息)36。
场景:GUI组件通讯、分布式系统中的调和服务。
备忘录模式(Memento)
实现:保存对象状态以便恢复(如游戏存档)36。
场景:事件回滚、文档编辑的历史纪录。
状态模式(State)
实现:对象行为随状态改变(如订单状态流转)36。
场景:电梯运行状态、游戏角色行为切换。
访问者模式(Visitor)
实现:解耦数据结构与操作(如 Element 担当 Visitor 访问)36。
场景:编译器语法树分析、报表生成器。
解释器模式(Interpreter)
实现:定义语法规则并解释(如正则表达式引擎)36。
场景:SQL解析、数学公式计算。
四、设计模式的核心价值
解耦与复用:通过抽象接口隔离厘革(如工厂模式隐藏对象创建细节)36。
扩展性:新增功能无需修改原有代码(如装饰器模式动态扩展)35。
可维护性:通过模式规范代码结构(如观察者模式简化变乱通知逻辑)25。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |