![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
我是程序汪
深耕IT咨询,10年开发老兵帮你少走弯路,分享我的工作经验,更关注底层码农 转行、培训、自学的小白程序员 联系我请去 微信公众号:我是程序汪 上面有个人微信号
展开
-
Java 中命令模式,请用代码具体举例
在这个示例中,命令模式将“打开灯”的操作封装成了一个命令对象LightOnCommand,并且通过RemoteControl来执行这个命令。这样做的好处是,如果有其他命令,比如“关闭灯”的操作,只需要创建相应的命令对象并设置给RemoteControl即可,而不需要直接修改RemoteControl的代码。在Java中,命令模式是一种行为设计模式,它允许将请求封装成一个对象,从而使得可以参数化其他对象对请求进行调用、队列化请求、或者记录请求日志,同时支持可撤销的操作。原创 2024-04-14 21:37:39 · 304 阅读 · 0 评论 -
Java 中解释器模式,请用代码具体举例
在这个示例中,我们首先定义了抽象表达式接口 Expression,它有一个 interpret 方法用于解释表达式。它定义了一种语言的语法,并提供了解释器来解释该语言中的表达式。解析过程在 parse 方法中进行,我们使用栈来构建表达式的语法树,遇到操作符时,弹出栈顶的两个表达式,并根据操作符构建相应的表达式节点,然后将新的表达式节点压入栈中。Main 类作为客户端,定义了一个表达式字符串,并解析该表达式并进行求值。最后,通过调用解释器的 interpret 方法,我们可以传入上下文对象来求解表达式的值。原创 2024-04-13 21:06:33 · 422 阅读 · 0 评论 -
Java 中建造者模式,请用代码具体举例
HighEndComputerBuilder 类是一个具体的建造者,负责构建高端计算机的各个部件。Director 类负责指挥建造者构建计算机,它可以接受不同的建造者来构建不同配置的计算机。建造者模式是一种创建型设计模式,它允许你创建一个复杂对象的不同部分并将它们组装在一起,以产生最终的对象。在 Main 类中,我们创建了一个指挥者和一个高端计算机的建造者,并指定给指挥者。然后指挥者使用建造者构建高端计算机,最终得到一个完整的高端计算机对象。原创 2024-04-13 21:03:18 · 296 阅读 · 0 评论 -
Java 中代理设计模式,请用代码具体举例
当调用 display() 方法时,如果 RealImage 对象尚未创建,则会创建一个新的 RealImage 对象并调用其 display() 方法,否则直接调用已存在的 RealImage 对象的 display() 方法。在 Main 类中,我们使用代理来加载和显示图片,当第一次显示图片时,代理会创建实际的图片对象并显示,而当再次显示同一张图片时,代理直接调用已存在的图片对象的显示方法,不需要重新加载。代理设计模式是一种结构型设计模式,它允许你提供一个代理或者占位符以控制对其他对象的访问。原创 2024-04-12 16:16:17 · 463 阅读 · 0 评论 -
Java 中工厂设计模式,请用代码具体举例
在这个例子中,Product 接口定义了产品的操作方法 operation(),ConcreteProduct1 和 ConcreteProduct2 是具体的产品类实现了该接口。Factory 接口定义了创建产品的方法 createProduct(),ConcreteFactory1 和 ConcreteFactory2 是具体的工厂类实现了该接口,分别用于创建 ConcreteProduct1 和 ConcreteProduct2。原创 2024-04-12 16:15:11 · 356 阅读 · 0 评论 -
Java 中责任链模式,请用代码具体举例
在 Main 类中,我们创建了两个具体处理者,并设置了处理者链,然后创建了两个请求并调用了处理请求的方法。当一个请求被发送时,它首先被第一个处理者处理,如果该处理者不能处理该请求,它将请求传递给下一个处理者,直到有一个处理者能够处理该请求为止。在这个示例中,请求1被ConcreteHandler1处理,请求2被ConcreteHandler2处理。责任链模式允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求为止。原创 2024-04-11 19:01:34 · 210 阅读 · 0 评论 -
Java 中装饰模式,请用代码具体举例
Decorator 是装饰器抽象类,持有一个 Component 对象,并实现了 operation() 方法来委托给被装饰的组件。ConcreteDecoratorA 和 ConcreteDecoratorB 是具体装饰器类,它们扩展了 Decorator 并添加了额外的操作。由于装饰器链的存在,实际执行时会先执行 ConcreteDecoratorB 的操作,然后再执行 ConcreteDecoratorA 的操作,最后执行具体组件的操作。原创 2024-04-11 19:00:21 · 130 阅读 · 0 评论 -
Java 中模板方法模式,请用代码具体举例
在这个例子中,AbstractClass 是抽象类,定义了模板方法 templateMethod() 和一些基本方法,其中 operation1() 和 operation2() 是抽象方法,需要由具体的子类实现。在 Main 类中,我们创建了 ConcreteClass 的实例并调用了模板方法 templateMethod(),它会按照定义的算法骨架执行各个基本方法。在Java中,模板方法模式是一种行为设计模式,它定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。原创 2024-04-10 10:39:57 · 451 阅读 · 0 评论 -
Java 中状态模式,请有代码具体举例
在这个示例中,State 接口定义了一个 doAction() 方法,用于执行特定状态下的操作。StartState 和 StopState 类是具体的状态类,实现了 State 接口。Context 类是一个包含状态的类,它维护了当前的状态,并提供了方法来设置和获取状态。在客户端类 StatePatternExample 中,我们创建了一个 Context 对象,并在不同的状态下执行了操作,从而演示了状态模式的用法。状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。原创 2024-04-10 09:00:00 · 123 阅读 · 0 评论 -
Java 中代理模式,请有代码具体举例
RealImage 类是实际的图片类,负责加载和显示图片。ImageProxy 类是代理类,用于控制对 RealImage 对象的访问。当客户端首次访问图片时,ImageProxy 对象会创建一个 RealImage 对象并调用其 display() 方法。在后续的访问中,ImageProxy 对象会直接调用已创建的 RealImage 对象的 display() 方法,从而实现延迟加载的效果。在 Java 中,代理模式通常用于在访问对象时添加一些额外的功能,例如延迟加载、访问控制、日志记录等。原创 2024-04-09 21:43:21 · 183 阅读 · 0 评论 -
Java 中策略模式,请有代码具体举例
在这个示例中,PaymentStrategy 接口定义了一个支付方法 pay()。然后有两个具体的支付策略实现了该接口:CreditCardPayment 和 PayPalPayment。ShoppingCart 类用来进行结账操作,它可以设置不同的支付策略。最后,StrategyPatternExample 类展示了如何使用这些类来实现策略模式。策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在 Java 中,你可以使用接口来定义不同的算法,并通过多态性在运行时选择要使用的算法。原创 2024-04-09 21:42:07 · 192 阅读 · 0 评论 -
Spring源码中常见的设计模式,举例3个代码例子说明
1.工厂模式(Factory Pattern):Spring中大量使用工厂模式来创建和管理对象实例,例如BeanFactory和ApplicationContext等容器就是典型的工厂模式的实现。3.代理模式(Proxy Pattern):Spring AOP(面向切面编程)基于代理模式实现,通过动态代理在方法执行前后添加额外的逻辑,如事务管理、日志记录等。2.单例模式(Singleton Pattern):Spring容器中管理的Bean默认是单例的,通过单例模式确保在整个应用程序中只存在一个实例。原创 2024-04-04 18:00:00 · 185 阅读 · 0 评论 -
Java中单例设计模式,请有代码举例 最少3个例子
3.双重检查锁单例(Double-Checked Locking):结合了懒汉式和饿汉式的优点,使用双重检查锁来保证线程安全和延迟加载。这些是Java中常见的单例设计模式的示例。每种实现方式都有其适用的场景和优缺点,开发者根据具体需求选择合适的单例实现方式。在Java中,单例设计模式确保类只有一个实例,并提供全局访问点。1.懒汉式单例(Lazy Initialization):在第一次被使用时才创建实例。2.饿汉式单例(Eager Initialization):在类加载时即创建实例。原创 2024-04-03 18:00:00 · 134 阅读 · 0 评论