- 博客(22)
- 收藏
- 关注
原创 [设计模式] 备忘录模式Memento
这样所有的备忘录只需要实现它(当然也并不需要实现任何方法)让用户可以按照时间或者其他顺序恢复自己的备忘录(存档)Memento是他创建出来的备忘录(也就是游戏存档)这当中的Originator就是需要保存状态的类。Caretaker负责管理这些备忘录(游戏存档)可以使用任意数据接口存储这些备忘录(角色数据)这个备忘录的具体类, 强转之后就能使用。现在用户可以创建自己的存档备份了。这里是上面的内部类实现的接口。这次的例子是游戏打boss。自然无法修改备忘录的属性。但是生成备忘录的类知道。
2025-05-19 19:11:18
297
原创 [设计模式] 桥接模式Bridge
翻译一下就说, 实现系统可能有多角度分类, 并且每种分类都有可能变化, 那么就把这种多角度分离出来让他们独立变化, 减少他们之间的耦合。实现了系统多角度变化,但把多角度分离出来了,让他们独立变化, 减少了他们的耦合。首先是一个具体的手机, 如xx米, xx为。也只需要实现一个新的Phone。想要实现一个手机因该怎么办?如果要新增一个手机品牌。然后软件依托手机运行。
2025-05-19 18:14:23
278
原创 [设计模式] 中介者模式Mediator
中介者模式用一个对象来封装一系列的对交互. 中介者使各对象不需要显示的互相引用。如果国家只通过联合国安理会联系,这个例子是联合国维护世界的例子。那么一个国家只直接和安理会交接。用户类需要的方法与成员变量。用户A如果想和用户B交互。从上面两点就能分析出来。如果国家与国家直接联系。那么使用的时候便是这样。就直接举例子上代码了。
2025-05-18 22:26:44
207
原创 [设计模式] 观察者模式Observer
的以来关系, 让多个观察者对象同时监听一个主题对象,当主题对象发生变化时会通知所有观察者对象, 使订阅者可以更新自己。这是具体的观察者,也就是订阅了主题(up主)的"粉丝"主题类(Subject)与具体的观察者已经成功解耦了。有了观察者, 还需要有主题(up主)他只知道调用观察者的update方法。但是却并不只知晓具体的观察者是哪个。例子是订阅的一个频道或up主。然后是实现了这个接口的具体类。会通知所有关注他们的用户。观察者模式定义了一种。我们因该面向接口编程。
2025-05-18 17:46:42
247
原创 [设计模式] 责任链Responsibility
责任链模式就是将多个对象连成一条链, 让请求沿着这条链传递, 知道有一个对象处理他为止。不同级别的领导处理的请假天数不一样。请假就要有请假条, 这是请假条类。我们设计一个工厂将他们组装起来。这次的例子是公司请假的例子。这是责任链的一般uml图。然后客户端就可以这样使用。老总可以处理15天内的。再加上一个默认的审批类。总监可以处理7天内的。只需要获取一下这个链。然后发送自己的请假条。
2025-05-17 17:13:48
160
原创 [设计模式] 命令模式Command
接受者(invoker)需要保存命令 --> 命令的具体执行需要指定执行者(receiver)然后根据uml可以看出还少一个命令接受者(invoker),也就是服务员。然后还要通知命令执行者(receiver),也就是厨师执行命令。然后通知命令的执行者(receiver)执行命令。这是厨师,也就是命令的执行者(receiver)客人可以给服务员(invoker)说自己的需求。服务员记录需求(记录命令)每隔命令都有它的具体执行者。服务员需要记录客人的命令。到目前为止因该都很简单。下面是两个具体的命令。
2025-05-17 16:19:08
179
原创 [设计模式] 策略模式strategy
此时我们可以用一个Context(其实就是一个简单工厂)来管理。策略模式定义了一组算法, 将他们分装起来, 使其可以互相替换。正常来说就要用if else来判断我们;如果直接使用的话就变成正常多态了。超市打折的时候有各种打折模式。中秋节充xx元抵扣xx元。定义一个抽象的打折策略。然后是具体的打折策略。
2025-05-17 15:14:34
136
原创 [设计模式] 模板方法template
模板方法模式就是定义一个操作中的算法骨架, 将一些步骤延迟到子类中实现. 使得子类可以不改变一个算法的结构就可以重新定义这个算法的特定步骤。如果所有的学生(子类)都在自己的这里抄一份题目再写答案。这个模式理解起来很简单, 就直接上代码了。做的时候不能只写答案, 还要把题目写上去。例子是老师布置卷子让学生做。这是模板方法的一般UML图。那么题目很有可能抄错。此时我们就可以这么做。
2025-05-17 14:41:26
146
原创 [设计模式] 享元模式flyweight
说人话就是:通过共享技术(享元模式), 来管理对象, 避免重复创建相同/相似的对象, 从来减少内存消耗和提高系统性能。享元模式就是运行共享技术有效地支持大量细粒度的对象 ---- <大话设计模式>而工厂只有一个(单例), 因此可以控制享元对象的创建。直接看下面这个简单的类, 他也算是用了享元模式。这个类是仿照jdk中的Integer类写的。客户端可以从工厂中获得享元对象实例。在我的理解中, 他更像是一种方式。让我们运用缓存, 减小系统开支。我们使用其实不用这么麻烦。
2025-05-16 22:23:50
108
原创 [设计模式] 代理模式Proxy
代理模式算是所有设计模式中最简单的模式之一了代理模式主要是为了扩展方法的他项客户端隐藏了真实的类只暴露了代理类在Java中代理主要有三种。
2025-05-16 00:30:00
230
原创 [设计模式] 组合模式Combination
那么么我们的文件或对文件夹都需要继承这个抽象类。让用户使用它(文件, 文件夹)具有一致性。那么就需要将文件夹和文件抽象成一个类。这就可以看出非常明显的树形结构了。而组合模式是将对象组合成树形结构。此时不管new的是文件夹还是文件。组合模式最常见的就是文件夹系统。一个文件夹里只可能包含两种资源。, 让用户使用多个类具有。都是非常典型的树形结构。或者公司的人员职位了。使用的话因该都没问题。
2025-05-15 18:35:47
124
原创 [设计模式] 建造者模式Builder
将要构建的类(Bike)的所有必要属性都写成构建方法(buildXXX)现在我们如果将Builder抽象类的Bike属性设置成公有。有了Direct指挥者, 我们调用就可以更加轻松方便。在构建者模式想要创建他, 需要使用Builder类。因此我们还需要一个指挥者(Direct)来指挥构建。但是这只是一个抽象的构建自行车的类。具体构建出来的自行车是什么样子的。如果这个类有十几个乃至上百个字段。还需要我们自己写具体实现类。或者暴露出他的Bike字段。我们其实已经可以完成构建的。还不用担心遗忘某个字段。
2025-05-14 14:45:00
164
原创 [设计模式] 适配器模式Adapter
可以看见, 这样就将原本只能接受一个http类的方法, 使用适配器,让他发送了https的请求。一般的操作是适配器类继承 适配成的类, 然后内部引用一个需要适配的类。也就是说我们现在需要将https的接口转换成http的接口。假设我们现在有一个发送http请求的接口与他的实现类。还有一个https请求的接口和他的实现类。适配器就是将一个类的接口转换成另一个接口。要求所有的请求由http换成https。而发送的工作要给另一个类来做。看下面的代码就能一目了然了。此时我们就需要用适配器了。能重构的时候最好重构。
2025-05-14 13:33:14
127
原创 [设计模式] 抽象工厂模式
本文通过对比工厂方法模式和抽象工厂模式,探讨了设计模式中面向抽象/接口开发的核心思想。工厂方法模式中,每个具体工厂类只能创建一个产品,而抽象工厂模式则允许一个具体工厂类创建多个产品(产品簇)。文章通过代码示例展示了如何实现这两种模式,并指出抽象工厂模式在新增或减少产品时需要大量修改的缺点。最后,提出了使用简单工厂模式来优化抽象工厂模式,减少代码修改量,同时保持客户端的稳定性。
2025-05-13 22:00:00
884
原创 [设计模式] 简单工厂模式
设计模式的核心思想是面向抽象/接口开发,简单工厂模式是其中的一种实现方式,它将类的实例化过程交给工厂类处理。通过一个计算器的例子,展示了如何从面向过程的代码重构为面向对象的代码,并引入简单工厂模式。通过抽象类Operator和其子类(如OperatorAdd、OperatorSub等),实现了加减乘除等操作。简单工厂类OperatorSimpleFactory负责根据输入参数创建相应的操作类实例。这种设计不仅符合开闭原则,还隐藏了具体实现类,用户只需通过工厂类获取抽象类实例,无需关心具体实现。这种模式在Sp
2025-05-12 16:35:44
146
原创 SpringSecurity前后端分离,jwt 方式登录
本文介绍了如何使用Spring Security和JWT实现前后端分离的登录认证系统。首先,通过禁用表单登录和CSRF保护,简化了安全配置。接着,通过自定义过滤器处理JWT令牌的生成和验证。控制器层实现了登录接口,调用AuthenticationManager进行用户认证,并生成JWT令牌。用户信息通过UserDetailsService从数据库中查询,并返回包含权限的UserDetails对象。最后,通过自定义过滤器解析JWT令牌,并根据其内容设置用户权限,确保后续请求的权限验证。整个过程结合流程图展示了
2025-05-11 23:49:48
229
原创 MybatisPlus分页报错java.lang.NoSuchFieldError: HighGo
mybatisplus分页报错NoSuchFieldError: HighGo
2025-02-26 17:06:31
376
原创 windows连接ubuntu虚拟机redis,从安装到连接
纯纯小白,今天学习到了redis,发现windows版的并不好用,在ubuntu安装后遇到了一些问题,写下来记录一下。
2024-05-23 19:53:41
722
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人