小胖子的Java设计模式-单例模式

单例模式(Singleton Pattern)

背景介绍:

在小胖子的程序世界里,披萨店的魅力愈发扩大,于是他们决定开设一个新的分店,名为“二店单例披萨屋”。小胖子的好基友猥琐和涛涛对这个新店充满期待,然而,与一店的成功不同,二店的披萨在制作过程中出现了问题。

设计模式应用:
懒汉式单例模式(线程安全)

小胖子和他的好基友们决定使用懒汉式单例模式,以确保他们在任何需要时都能够获得相同的披萨店实例。为了防止披萨店被盗,他们在店门口增加了一位保安,确保每个人都能够安全地进入。

代码示例:
public class LazyThreadSafeSingletonPizzaShop {
    private static LazyThreadSafeSingletonPizzaShop instance;

    private LazyThreadSafeSingletonPizzaShop() {
        // 私有构造函数,防止外部实例化
    }

    public static synchronized LazyThreadSafeSingletonPizzaShop getInstance() {
        if (instance == null) {
            instance = new LazyThreadSafeSingletonPizzaShop();
        }
        return instance;
    }

    public String orderPizza(String flavor) {
        return "一份特色披萨(" + flavor + "口味)出炉啦!";
    }
}

// 测试用例
public class LazyThreadSafeSingletonPatternExample {
    public static void main(String[] args) {
        LazyThreadSafeSingletonPizzaShop pizzaShop = LazyThreadSafeSingletonPizzaShop.getInstance();
        String orderResult = pizzaShop.orderPizza("意大利");
        System.out.println(orderResult);
    }
}
恶汉式单例模式(线程不安全)

然而,对于“一店单例披萨屋”,由于防盗措施不足,一名小偷成功潜入,导致披萨制作不安全。为了强调这一点,他们决定在新店中使用恶汉式单例模式。这时,由于一开始就有人入侵,整个制作过程都变得不可靠。

代码示例:
public class EagerThreadUnsafeSingletonPizzaShop {
    private static EagerThreadUnsafeSingletonPizzaShop instance = new EagerThreadUnsafeSingletonPizzaShop();

    private EagerThreadUnsafeSingletonPizzaShop() {
        // 私有构造函数,防止外部实例化
    }

    public static EagerThreadUnsafeSingletonPizzaShop getInstance() {
        return instance;
    }

    public String orderPizza(String flavor) {
        return "一份特色披萨(" + flavor + "口味)出炉啦!";
    }
}

// 测试用例
public class EagerThreadUnsafeSingletonPatternExample {
    public static void main(String[] args) {
        EagerThreadUnsafeSingletonPizzaShop pizzaShop = EagerThreadUnsafeSingletonPizzaShop.getInstance();
        String orderResult = pizzaShop.orderPizza("墨西哥");
        System.out.println(orderResult);
    }
}

在这个例子中,恶汉式单例模式强调了一店披萨屋的不安全性,以及由于防盗不力导致的问题。这使得小胖子和他的好基友们更加珍惜懒汉式单例模式,因为它提供了更安全的披萨制作环境。

下一个设计模式是什么呢?

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值