设计模式
xgjj68163
java 开发
展开
-
大话设计模式-观察者模式
场景:将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维护一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。而观察者模式的关键对象是主题Subject和观察者Observer,一个Subject可以有任意数目的依赖它的Observer,一旦Subject的状态发生了改变,所有的Observer都可以得到通知。Subject发出通知时并不需要知道谁是它的观察者,也就是说,具体观察者是谁,它根本不需要知道。而任何一个具体观察者不知道也不需要知道其原创 2022-06-13 15:01:01 · 364 阅读 · 0 评论 -
大话设计模式-策略模式
场景:商场收银时如何促销,用打折还是返利,其实都是一些算法,用工厂来生成算法,这没有错,但算法本身只是一种策略,最重要的是这些算法随时都可能互相替换,这就是变化点,而封装变化点是面向对象很重要的思维方式。策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。 1. 策略抽象类、打折策略类、满减策略类2. 上下文类3. 测试类...原创 2022-06-09 10:07:03 · 139 阅读 · 0 评论 -
大话设计模式-状态模式
场景:工作状态随时间的变化而变化状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类要点:工作由状态聚合而成;将状态的变化影响抽象出来,且状态变化依赖工作类本身;抽象状态类代理了工作类1. 抽象状态,早晨状态、中午状态、下午状态、下班状态2. 工作类 3. 测试类...原创 2022-06-08 17:58:50 · 163 阅读 · 0 评论 -
大话设计模式-职责链模式
场景:职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。增加一个审批对象,仅需修改后继节点; 1. 审批人抽象类、组长类、经理类、总裁类2. 测试类......原创 2022-06-07 11:12:26 · 109 阅读 · 0 评论 -
大话设计模式-桥接模式
使用场景:桥接模式的核心意图就是将这些实现独立出来,让它们各自地变化。这就使得每种实现的变化不会影响其他实现,从而达到应对变化的目的。多用聚合,少用继承1. 手机软件抽象类、通讯录类、游戏类2. 手机品牌类、华为类、小米类3. 测试类......原创 2022-06-06 17:25:16 · 1170 阅读 · 0 评论 -
大话设计模式-外观模式
使用场景:外观模式(门面模式),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式完美地体现了依赖倒转原则和迪米特法则的思想。你可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。package com.hj.designPattern.facade;public class Gupiao { pu原创 2022-05-27 18:08:04 · 116 阅读 · 0 评论 -
大话设计模式-适配器模式
使用场景:接口不相同时,首先不应该考虑用适配器,而是应该考虑通过重构统一接口。在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。原创 2022-05-27 16:31:28 · 171 阅读 · 0 评论 -
大话设计模式-装饰模式
要点:多重继承,super的巧妙运用场景:动态的给一个对象添加额外的功能1. 被装饰的人package com.hj.designPattern.decorate;import lombok.Data;@Datapublic class Person { private String name; public void show() { System.out.println("装饰的" + name); }}2. 服饰类(装饰类),原创 2022-05-27 14:40:26 · 181 阅读 · 0 评论 -
大话设计模式-享元模式
外部状态必须在客户端修改,比如随机画10000个小人,小人颜色有三种:红色、绿色、蓝色,实现结果如下场景代码实现1. 小人抽象类package com.hj.designPattern.flyweight;import com.hj.designPattern.flyweight.enums.Color;import lombok.Data;@Datapublic abstract class Person { public Color color;..原创 2022-05-27 10:37:52 · 128 阅读 · 0 评论 -
大话设计模式-代理模式
1. 追求接口package com.hj.designPattern.daili;public interface IPursuit { void giveFlowers(); void giveChocolate();}2. 美美类package com.hj.designPattern.daili;import lombok.Data;@Datapublic class Meimei { private String name; ..原创 2022-05-25 16:52:19 · 98 阅读 · 0 评论 -
大话设计模式-建造者模式
1. 建造接口类:画小人package com.hj.designPattern.build;public interface IBuildPerson { void drawHead(); void drawBody(); void drawArms(); void drawLegs(); // 建造结果 void resultPerson();}2. 建造的产品:人package com.hj.designPattern....原创 2022-05-24 18:52:09 · 122 阅读 · 0 评论 -
大话设计模式-单例模式
1. 要点:构造函数是私有的,仅本类可创建实例对象2. 双检锁方式package com.hj.designPattern.factory.singleton;public class Singleton { public static Singleton singleton; private Singleton() { } public static Singleton getInstance() { // 非线程安全// ..原创 2022-05-24 17:26:04 · 82 阅读 · 0 评论 -
大话设计模式-简单工厂模式
1. 抽象产品类:计算器package com.hj.designPattern.factory.simple;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic abstract class Computor{ public abstract int com...原创 2022-05-24 16:33:14 · 149 阅读 · 0 评论 -
大话设计模式-状态模式
(10条消息) 设计模式(Java随笔)—状态模式_远处-CSDN博客https://blog.csdn.net/qq_40780805/article/details/83627410java 之 状态模式(大话设计模式) - 红尾巴的猪 - 博客园 (cnblogs.com)https://www.cnblogs.com/zhuxiansheng/p/7999656.html...转载 2021-12-14 17:01:02 · 84 阅读 · 0 评论 -
单例模式@Autowired失效、redis分布式锁
由于单例模式构造函数是私有的,类初始化时注入失效,使用@PostConstruct解决@Componentpublic class DistributeLockUtil { private static DistributeLockUtil instance = new DistributeLockUtil(); @Autowired private StringRedisTemplate redisTemplate; private DistributeLoc.原创 2021-08-12 10:35:45 · 572 阅读 · 0 评论 -
设计模式分类
一、创建型1.工厂方法模式 抽象产品、具体产品、抽象工程、具体工厂,具体工厂依赖具体产品;客户端创建具体产品对象、具体工厂对象,调用具体工厂方法。2.抽象工厂模式 抽象产品簇、具体产品、抽象工厂、具体工厂,具体工厂依赖具体产品;客户端创建具体产品,具体工厂;3.单例模式 构造函数为私有;懒汉模式,为null创建对象,线程不安全;饿汉模式,先创建...原创 2015-08-13 10:28:21 · 356 阅读 · 0 评论