【Java】23种设计模式——概述

什么是设计模式?是一套反复使用,经过分类编码、代码设计经验性的总结。

设计的核心原则

  • 面向对象设计原则 。 编程时基本要遵守,高内聚低耦合。

  • 单一职责原则 。一个类,只敢一件事。例如,程序员写代码、歌手唱歌、球员打球。类具象化了,一旦需要哪个方法,就可以知道从哪个类调用了。

  • 开闭原则 。 开:提供方提供 抽象类/接口/方法 等,实现类可以决定行为。闭:调用方调用时,尽量不需要修改代码 。

  • 依赖倒置原则 。 高层模块不依赖底层实现,均依赖抽象。 传统的方法中,没有接口,而是依赖类与类之间的对象创建。一旦需求编号,类就需要重写,这样其他类也需要修改。

  • 里氏替换原则 。 子类可以替换父类的功能,但不能覆盖父类的抽象方法。

    public abstract class Coder {
         public abstract void eat();   //这个行为还是定义出来,但是不实现
    
        public void coding() { // 父类方法,不能被子类重载。
            System.out.println("我会打代码");
        }
    
    
        class JavaCoder extends Coder{
            public void game(){		//子类自己的额外的方法
                System.out.println("艾欧尼亚最强王者已上号");
            }
            
            public void eat(){	//子类实现父类的抽象方法(必须)
                System.out.println("干啥啥不行,干饭第一名!")
            }
        }
    }
    
  • 接口隔离原则 。 对接口进行细分,避免接口中定义的方法,在实现类中用不上。

  • 合成复用原则。 优先使用对象组合,而不是通过集成达到复用的目的。

    class A {
        public void connectDatabase(){
            System.out.println("我是连接数据库操作!");
        }
    }
    
    class B {
        
        A a;
        public B(A a){   //在构造时就指定好
            this.a = a;
        }
        
        public void test(){
            System.out.println("我是B的方法,我也需要连接数据库!");
            a.connectDatabase();   //也是通过对象A去执行
        }
    }
    
  • 迪米特法原则(最小知识原则)。一个类/模块,对其他模块有越少的交互越好。

23种设计模式的分类及核心特点总结

模式类型 模式 说明
创建型模式(5种) 单例模式 确保一个列仅有一个实例,并提供全局访问点
典型实现:双重检查锁定、静态内部类
工厂方法模式 将对象创建延迟到子类,通过接口定义创建逻辑
抽象工厂模式 创建相关产品族,强调多系统列对象的协同和生成
建造者模式 分步构建复杂对象,分离构造过程与表示
原型模式 通过克隆现有对象生成新对象,减少重复初始化开销
结构型模式(7种) 适配器模式 转换接口兼容性,使不兼容类可协调工作
桥接模式 解耦抽象与实现,允许两者独立变化
组合模式 树形结构处理部分-整体关系,统一操作方式
装饰器模式 动态添加职责,替代继承扩展功能
外观模式 提供统一接口简化子系统调用复杂度
享元模式 共享细粒度对象,减少内存消耗
代理模式 控制对象访问,增强功能(如远程代理、虚拟代理)
行为模式(11种) 策略模式 封装算法族,运行时灵活切换策略
模板方法模式 定义算法骨架,子类重写特定步骤
观察者模式 定义一对多依赖,实现事件通知机制
迭代器模式 统一遍历集合元素,隐藏底层结构
责任链模式 请求沿处理链传递,动态分配处理者
命令模式 将请求封装对象,支持撤销、队列操作
备忘录模式 捕获对象状态,支持回滚与恢复
状态模式 封装状态行为,随状态改变动态调整逻辑
访问者模式 分离数据结构与操作,随状态变动
中介者模式 集中管理对象交互,降低耦合度
解释器模式 定义语法规则,解析特定领域语言

应用场景

接下来,看看23种设计模式的应用场景如下图:
image

posted @ 2025-06-20 14:47  陆陆无为而治者  阅读(79)  评论(0)    收藏  举报