- 博客(10)
- 收藏
- 关注
原创 java设计模式之观察者模式
/ 3.如果观察者依赖于主题的状态并且主题以意外的方式更改,则观察者可能处于不一致的状态。// 1.对象之间的松耦合,使得可以轻松添加或删除观察者,而不影响主题或其他观察者。// 2.支持开放/封闭原则,允许添加新的观察者而不修改主题。// 1.主题可能发送对某些观察者不相关的通知,导致资源浪费。// 2.通知观察者的顺序可能很重要,但该模式不支持此功能。// 观察者模式允许对象在另一个对象的状态更改时得到通知。// 3.支持单一职责原则,将主题和观察者的关注点分离。
2023-04-18 11:38:22
82
原创 java设计模式之责任链模式
1.降低耦合度,将请求的发送者和接收者解耦;2.简化了对象,使得对象不需要知道链的结构;3.增强了系统的可扩展性,可以增加新的请求处理类;4.增加新的请求处理类很方便,无需修改原有代码;5.灵活性增强,可以根据需要自由组合链和具体处理类;6.可以对请求的处理顺序进行灵活的控制。:1.不能保证每个请求一定被处理;2.对于比较长的责任链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响;3.责任链建立的合理性要靠客户端来保证,增加了客户端的复杂性;4.可能会造成循环调用,导致系统陷入死循环。
2023-04-18 11:29:18
90
原创 java设计模式之适配器模式
缺点:对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为抽象类,不能为具体类,其使用有一定的局限性,不能将一个适配者类和它的子类都适配到目标接口。优点:可以适配多个不同的适配者和适配目标,且适配者和适配目标之间无需继承或者实现特定的接口。同时,由于适配器和适配者之间是关联关系,所以如果适配者的接口发生改变,适配器也需要做相应的修改。优点:可以适配多个不同的适配者和适配目标,且适配者和适配目标之间无需继承或者实现特定的接口。
2023-04-18 11:22:25
90
原创 设计模式之建造者+策略模式
2. 建造者模式将对象的创建过程与对象本身分离开来,可以使用相同的创建过程来得到不同的产品对象,也可以通过相同的产品建造过程得到不同的产品,方便扩展。* 1. 建造者模式将复杂产品的创建过程封装起来,使得用户只需要知道所需建造者的类型即可,无须关心产品对象的具体创建过程,大大降低了系统的耦合度。* 2. 策略模式将算法的使用与算法的实现分离开来,使得算法的使用方便修改和替换,也方便单元测试。* 3. 建造者模式通过组合不同的建造者和不同的零件,可以创建出更加复杂功能的产品对象。
2023-04-18 11:07:33
144
原创 java设计模式之工厂模式
/ 3. 工厂模式可以帮助我们遵循开放封闭原则,因为我们可以通过添加新的工厂方法来创建新的对象类型,而不需要修改现有的代码。// 2. 工厂模式可以帮助我们隐藏对象的创建细节,因为客户端只需要知道如何使用工厂方法来创建对象即可。// 1. 工厂模式可以帮助我们在创建对象时更加灵活,因为我们可以通过工厂方法来创建不同类型的对象。// 在工厂模式中,我们创建对象而不是直接实例化对象,这样可以帮助我们在创建对象时更加灵活。// 下面是一个简单的工厂模式示例,其中我们使用工厂方法来创建不同类型的汽车对象。
2023-04-18 11:02:53
60
原创 java常用的设计模式
职责链模式:将请求的发送者和接收者解耦,使得多个对象都有机会处理这个请求。* 适配器模式:将一个类的接口转换成客户希望的另一个接口。* 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。* 工作中最常用的设计模式有:单例模式、工厂模式、适配器模式、装饰器模式、观察者模式、策略模式、职责链模式。* 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。* 单例模式:确保一个类只有一个实例,并提供全局访问点。
2023-04-18 10:59:49
89
1
原创 volatile到底如何保证可见性和禁止指令重排序的
摘自《深入理解Java虚拟机》“观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令” lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能: 1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成; 2)它会强制将对缓存的修改操作立即写入主存; 3)如果是写操
2022-03-09 16:11:45
258
原创 线程池参数配置详解
/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the pool, even * if they are idle, unless {@code allowCoreThreadTimeOut} is set .
2022-02-21 18:10:49
3795
1
原创 JAVA多线程--信号量(Semaphore)
简介信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,...
2022-02-10 15:48:47
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人