美文网首页
单例模式(Singleton Pattern):购物车实战案例分

单例模式(Singleton Pattern):购物车实战案例分

作者: 肖哥弹架构 | 来源:发表于2024-07-14 23:20 被阅读0次
image.png

开发一个在线商城系统,需要一个全局的购物车管理器,该管理器负责处理用户的购物车数据。由于购物车数据需要在用户整个会话期间保持一致性,并且只应该存在一个购物车实例,单例模式成为理想的选择。

2. 为什么要使用单例设计模式

单例模式确保了全局只有一个购物车实例,避免了多个实例间的数据冲突,同时提供了一个全局访问点,方便在应用的任何地方获取和管理购物车数据。

3. 标准单例模式图

image.png

4. 业务单例模式图

image.png

5. 业务代码参考

线程安全的单例实现

    public class ShoppingCartManager {
        private static volatile ShoppingCartManager instance;
        private Cart cart;

        private ShoppingCartManager() {
            this.cart = new Cart();
        }

        public static ShoppingCartManager getInstance() {
            if (instance == null) {
                synchronized (ShoppingCartManager.class) {
                    if (instance == null) {
                        instance = new ShoppingCartManager();
                    }
                }
            }
            return instance;
        }

        public Cart getCart() {
            return cart;
        }
    }

    class Cart {
        // 购物车逻辑
    }

使用枚举实现单例

    public enum ShoppingCartManager {
        INSTANCE;
        private Cart cart;

        ShoppingCartManager() {
            this.cart = new Cart();
        }

        public Cart getCart() {
            return cart;
        }
    }

使用静态内部类实现单例

    public class ShoppingCartManager {
        private static class SingletonHolder {
            private static final ShoppingCartManager INSTANCE = new ShoppingCartManager();
        }
        private Cart cart;

        private ShoppingCartManager() {
            this.cart = new Cart();
        }

        public static ShoppingCartManager getInstance() {
            return SingletonHolder.INSTANCE;
        }

        public Cart getCart() {
            return cart;
        }
    }

6. 使用单例的好处

单例模式解决了全局只有一个购物车实例的问题,避免了数据不一致性,同时提供了一个统一的访问点,简化了代码结构,提高了代码的可维护性和可测试性。

7. 其他使用单例场景参考

单例模式适用于需要全局唯一实例的场合,如配置管理器、连接池、日志管理器等。

8. 可参考开源框架

Spring Framework中的Bean容器广泛使用了单例模式,确保每个Bean在Spring容器中只存在一个实例。

总结

单例模式是一种简单而强大的设计模式,它通过限制实例化的次数来确保全局只有一个实例。在需要全局访问点和数据一致性的场景中,单例模式是一个理想的选择。

历史热点文章

相关文章

网友评论

      本文标题:单例模式(Singleton Pattern):购物车实战案例分

      本文链接:https://www.haomeiwen.com/subject/obdzcjtx.html