23种设计模式(Java版)

在这里插入图片描述创建模式:创建与使用分离,进行了解耦

多使用抽象接口,扩展不要修改原始功能
基类能使用的方法子类也应该能使用,因此子类尽量扩展父类方法而不是重写
构造方法中强制对组合等方式所需要的成员变量进行初始化赋值。

在这里插入图片描述
类中可以有抽象或者接口的成员,等到new时再实现。从而提高扩展性。
在这里插入图片描述在这里插入图片描述抽象接口的强大之处便是动态性

在这里插入图片描述
在这里插入图片描述在这里插入图片描述私有构造方法外界无法访问,也无法创建对象,所以必须是static的。只能用类名.方法来调用
饿汉式的问题在于没有使用该类的对象却创建了造成内存浪费

懒汉式
在这里插入图片描述
JVM在实例化对象时可能会进行指令重排序,使用volatile可以保证有序性。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述自己创建对象传递给工厂,用户只需要知道工厂的类别即可,后续的加工处理操作由工厂来完成。工厂的factory为了可变是接口。
这样一来增加类别只需要添加类即可,不用修改原始代码。符合开闭原则(对扩展开放,对修改关闭)

在这里插入图片描述简单来说就是一个抽象工厂实现多个类族,比如实现生产咖啡类和蛋糕类。

静态代码块会在类加载时执行一次

在这里插入图片描述在这里插入图片描述
实现clone方法即可,这里注意深浅拷贝的影响。适用场景:生成的对象都差不多,批量复制。
比如三好学生,只有名字不同,生成多个原型对象后只需要修改名字即可。

动态代理
访问代理而不是目标类的对象,可以进行增强。

在这里插入图片描述参数也可以是接口类型的
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
将继承改为聚合,构造函数里初始化。解决多继承的问题

装饰者模式
在这里插入图片描述在这里插入图片描述
把一些实现类做组合。
在这里插入图片描述
比如有很多的类需要继承一个父类会产生爆炸与高耦合,采用装饰者模式可以代替继承(本质是把同一功能的类封装到一个类组合扩展功能)核心是继承于聚合,继承表明了所需要实现的功能,聚合减少了更多的子类来继承。

在这里插入图片描述外观模式
在这里插入图片描述在这里插入图片描述相当于有一个中央控制器。特点是有统一的接口(比如都叫on)

组合模式
在这里插入图片描述由叶子节点和枝节点用List形成。组合模式适合文件管理或者树状。
在这里插入图片描述在这里插入图片描述设置单例模式共享
Integer就是享元模式,初始化了256个初始对象(缓存池)。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述实现了IOC,转而是父类的模板方法控制子类的执行流程。

策略模式
在这里插入图片描述

在这里插入图片描述sort根据自定义的compartor来排序

责任链模式
根据任务的等级与自身的权限判断谁去处理
在这里插入图片描述状态模式
根据当前状态判断是否可执行某些方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述迭代器模式
自定义实现hasnexat和next的遍历方法
在这里插入图片描述
备忘录模式
实现了ctrl z撤销的模式

解释器模式
计算器,设计一套可解释的逻辑解释器方法

设计模式的核心思想就是高内聚,低耦合。尽量使用多态留足接口。使用拓展功能而不是修改功能。并且对用户的权限做出限制。

在这里插入图片描述
在这里插入图片描述
spring通过反射来创建对象
将xml写的标签进行字符串拼接,寻找对应的set方法,提供了类则会进行类强转
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值