![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 81
不良人-小白
这个作者很懒,什么都没留下…
展开
-
状态模式和策略模式的区别
状态模式的状态可以存储上下文,策略类不关心上下文状态模式的状态之间可以相互依赖,策略类之间相互独立状态模式可以替换上下文中的状态(将上下文对象的状态this替换为其它状态),策略类不行策略类处理单个特定的任务,状态类为上下文对象提供所有对应状态的实现策略通常作为参数传递给上下文,状态可以由上下文自身创建原创 2024-04-08 23:02:07 · 270 阅读 · 0 评论 -
策略模式和命令模式的区别
策略模式主要针对算法抽象(Strategy策略接口),它将每个算法封装到一个单独的类中,使得客户端可以根据具体情况在这些策略之间进行切换,策略模式关注的是定义一系列可互换的算法或行为,允许在运行时选择和替换不同的策略。而命令模式则是针对请求抽象(Command命令接口),Command通过将任何操作转换为对象,操作的参数将成为该对象的字段。从而实现使得请求可以被存储、延迟、排队、撤销、重试以及发送到远程服务器等。策略模式侧重于不同策略类实现与切换,而命令模式则侧重于对(不同)请求的封装原创 2024-04-06 15:12:32 · 275 阅读 · 0 评论 -
JDK动态代理原理浅析(通俗易懂版)
与静态代理相比,动态代理只需要指定增强方法,运行时会应用于所有的被代理类实现的接口方法上(如果需要指定方法增强,可以在invoke方法中判断method的name来制定增强),减少了代码量,并且后续如果被代理类后续要增加接口也无需更改代码,符合开闭原则。我们先执行增强方法,然后通过调用被代理对象的方法来实现代理功能。众所周知,静态代理模式就是通过代理类和被代理类实现相同的接口,代理类持有被代理类的对象,然后在代理类实现的方法中通过在调用被代理类的方法前后执行增强代码来实现。结果如下,确实实现了代理的功能。原创 2024-03-23 13:38:05 · 465 阅读 · 0 评论 -
代理模式和装饰器模式的区别
对于代理模式,客户端可以无需知道目标对象的存在,目标对象的生命周期则交给代理对象来处理。而对于装饰器模式来说,目标对象对于客户端来说是可见的,并且能够脱离装饰器独立工作,客户端可以无需知道装饰器的存在。原创 2024-03-26 11:26:57 · 572 阅读 · 0 评论 -
建造者模式和工厂模式的区别
建造者模式更关注对象的构建过程,适合于创建对象的内部结构复杂、组成部分及其装配顺序可变的情况,而工厂模式更关注的是对象的类型原创 2024-04-01 11:28:57 · 481 阅读 · 0 评论 -
一个例子读懂享元模式
通过上面的例子可以发现,享元模式实际上是缓存了可以重用的部分,在本例中就是Shap对象,这种情况下主要是减少形状对象(Shap)的创建,从而较少了内存的消耗。鉴别是否可以用享元模式,需要确认可共享的部分是有限的并且大量重复出现的其次,共享部分通常被设计为不可变的原创 2024-04-01 17:17:08 · 315 阅读 · 0 评论 -
策略模式中的上下文你可能用错了
通常情况使用策略模式,客户端通常不会主动调用上下文包装的的调用策略对象的方法,而是把策略对象交给上下文,让上下文在适当的情况下调用。这样一来,客户端就不需要关注具体策略的实现细节,它只负责决定使用哪种策略以及何时将其传递给上下文。上下文则承担起与策略对象交互的责任,确保在正确的上下文中执行策略对象的方法。这样的设计有助于降低耦合度,提高代码的可扩展性和重用性。原创 2024-04-02 17:36:16 · 184 阅读 · 0 评论