Java 设计者模式以及与Spring关系(一)单例和建造者模式

发布时间:2024年01月19日

简介:

? ? ? ? 本文是个系列一次会出两个设计者模式作用,如果有关联就三个,除此外还会讲解在spring中作用。

23设计者模式以及重点模式

????????我们都知道设计者模式323种设计模式,标红是特别重要的设计者模式建议都会,而且熟读于心。标蓝是指其次重要建议也要明白。

(1)创建型模式:单例模式抽象工厂模式构建者模式工厂模式原型模式

(2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式

(3)行为型模式:访问者模式、模版方法模式命令模式、迭代器模式观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式。

建造者模式(Builder Pattern)

  • 目的:将一个复杂对象的构造与其表示分离,使得同样的构建过程可以创建不同的表示。
  • 使用场景:当构建复杂对象时,特别是当对象包含多个成员属性时。
  • 实现方法:将对象的构建过程封装在一个 Builder 类中,逐步构建复杂对象

????????一般来说,如果一个对象的构建比较复杂,超出了构造函数所能包含的范 围,就可以使用工厂模式和Builder模式,相对于工厂模式会产出一个完整的产品,Builder应用于更加 复杂的对象的构建????????

示例:
public class Pizza {
    private String dough;
    private String sauce;
    private String topping;

    public static class Builder {
        private String dough = "";
        private String sauce = "";
        private String topping = "";

        public Builder dough(String val) {
            dough = val;
            return this;
        }

        public Builder sauce(String val) {
            sauce = val;
            return this;
        }

        public Builder topping(String val) {
            topping = val;
            return this;
        }

        public Pizza build() {
            return new Pizza(this);
        }
    }

    private Pizza(Builder builder) {
        dough = builder.dough;
        sauce = builder.sauce;
        topping = builder.topping;
    }
}
Spring的中使用:

用于构建复杂的对象,常见于创建响应实体 ResponseEntity 或者复杂的 Bean。

单例模式(Singleton Pattern)

  • 目的:确保一个类只有一个实例,并提供一个全局访问点。
  • 使用场景:当你需要确保全局只有一个对象实例时,如配置管理器、线程池等。
  • 实现方法:通过私有化构造方法并提供一个静态方法来获取唯一实例。

学术上说单例模式一般有两种,懒汉式和饿汉式

示例

饿汉式是有个上来就会加载的类对象。

懒汉式

Spring的中使用:

在 Spring 框架中,默认情况下,所有的 Bean 都是以单例模式创建的。这意味着每个 Bean 的实例在 Spring 容器中只有一个。

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!作者在这拜谢了!

如果你需要Java 、Python毕设、网页和系统设计,还有你是刚入职的新手需要度过试用期。联系方式微信:Romanticl99 网名:A乐神

文章来源:https://blog.csdn.net/weixin_43895362/article/details/135704763
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。