面对复杂业务架构,阿里架构师是如何做的?(第一期)

本文介绍了面对复杂业务场景时,软件架构设计中常用的设计模式,包括单例模式、建造者模式、抽象工厂模式、工厂方法模式、原型模式和适配器模式。通过代码示例和应用场景阐述了每个模式的核心思想和使用场景,帮助读者理解如何在实际项目中应用这些模式,提升系统可扩展性和可维护性。
摘要由CSDN通过智能技术生成

微信搜索 【微观技术】,关注这个不喜欢内卷的程序员。

精彩文章汇总 GitHub https://github.com/aalansehaiyang/technology-talk ,Star 12K ,汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识

面对复杂的业务场景,千变万化的客户需求,如何以一变应万变,以最小的开发成本快速落地实现,同时保证系统有着较低的复杂度,能够保证系统后续de持续迭代能力,让系统拥有较高的可扩展性。

这些是一个合格的架构师必须修炼的基础内功,但是如何修炼这门神功???

图片

不要着急,慢慢看下去。学了真本事,拿了阿里、头条的offer,女神还会远吗!❤️💖💘

接下来我们来系统性汇总下,软件架构设计需要知晓的设计模式,主要是提炼精髓、核心设计思路、代码示例、以及应用场景等。

CRUD很多人都会,不懂设计模式也可以开发软件,但是当开发及维护大型软件系统过程中就痛苦不堪,懂了人自然听得懂我在说什么,不懂的人说了你也不会懂。

我将常用的软件设计模式,做了汇总,目录如下:

图片

考虑到内容篇幅较大,为了便于大家阅读,将软件设计模式系列(共23个)拆分成四篇文章,每篇文章讲解六个设计模式,采用不同的颜色区分,便于快速消化记忆

本文是首篇,主要讲解单例模式建造者模式抽象工厂工厂方法原型模式适配器模式,共6个设计模式。

1、单例模式

定义:

单例模式(Singleton)允许存在一个和仅存在一个给定类的实例。它提供一种机制让任何实体都可以访问该实例。

图片

核心思路:

1️⃣ 保证一个类只有一个实例。如果该对象已经被创建, 则返回已有的对象。为什么要这样设计呢?因为某些业务场景要控制共享资源 (例如数据库或文件) 的访问权限。

2️⃣ 为该实例提供一个全局访问入口, 提供一个static访问方法。

代码示例:

/**
 * @author 微信公众号:微观技术
 */
public class Singleton {

    private static Singleton instance = new Singleton();

    // 让构造函数为 private,这样该类就不会被实例化
    private Singleton() {}

    // 获取唯一可用的对象
    public static Singleton getInstance() {
        return instance;
    }
}

在类中添加一个私有静态成员变量用于保存单例实例,声明一个公有静态构建方法用于获取单例实例。

注意事项:

多个业务场景,多个线程访问同一个类实例的全局变量,频发的写操作,可能会引发线程安全问题。另外,为了防止其他对象使用单例类的 new 运算符,编码时需要将默认构造函数设为私有。

如果想要采用延迟初始化对象,多线程并发初始化时,可能会有并发安全问题。假如:线程A,线程B都阻塞在了获取锁的步骤上,其中线程A获得锁—实例化了对象----释放锁;之后线程B—获得锁—实例化对象,此时违反了我们单例模式的初衷。

如何解决?

采用双重判空检查。首先保证了安全,且在多线程情况下能保持高性能,第一个if判断避免了其他无用线程竞争锁造成性能浪费,第二个if判断能拦截除第一个获得对象锁线程以外的线程。

/**
 * @author 微信公众号:微观技术
 */
public class SingleonLock {

    private static SingleonLock doubleLock;

    private SingleonLock() {}

    // 双重校验锁
    public static SingleonLock getInstance() {
        if (doubleLock == null) {
            synchronized (SingleonLock.class) {
                if (doubleLock == null) {
                    doubleLock = new SingleonLock();
                }
            }
        }
        return doubleLock;
    }
}


2、建造者模式

定义:

建造者模式,也称 Builder 模式。

将复杂对象的构造与其表示分离,以便同一构造过程可以创建不同的表示。

简单来说,建造者模式就是如何一步步构建一个包含多个组成部件的对象,相同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值