# 序

什么是架构设计？为什么要有架构设计？

软件开发犹如建筑房屋，正确的规划设计才能保质保量。

那么建设一栋房屋需要什么呢？

## 设计

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2F631f18340d92b8ac3a5ee66d150e8071b9938150.jpeg?generation=1616641637553887\&alt=media)

室内设计

建筑工人需要按图施工才能建好一栋房屋。 1. 结构 功能规划，划分范围。 1. 门 防火防盗，各有隐私。 1. 家具装饰 物尽其用，各有所需。

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2F542d25bf7c39291f4cfff3514444b2b77e30a93b.png?generation=1616641636186037\&alt=media)

产品设计

开发人员需要设计原型才能做到心中有数。 1. 结构 视图切换，页面缓存。 1. 权限 功能模块，各有粉红。 1. 视图 风格统一，易于维护。

## 标准

### 石材

石头坚固，不易打磨。

规格混乱，不易处理。

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2F25a3fef09f5faaef8d8b81d48eb4f3ac4a1123b8.jpg?generation=1616641637249165\&alt=media)

石墙

### 砖

黏土烧制，易于取材。

规格标准，易于处理。

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2F5348aef9cffb03c72267210f12f462a0ed18d6d6.jpg?generation=1616641636401954\&alt=media)

砖墙

建筑过程中材料的选择与加工十分重要，将材料做标准化处理会更简单。

前后端数据交互犹如处理材料，将数据处理为标准格式更易于开发。

张三返回数据

```javascript
{
    success: true,
    data: [{
        name: '张三',
        sex: 1
    },
    {
        name: '李四',
        sex: 0
    }]
}
```

李四返回数据

```javascript
{
    data: {
        code: 200,
        records: [{
            name: '张三',
            sex: 1
        },
        {
            name: '李四',
            sex: 0
        }]
    }
}
```

处理后数据

```javascript
{
    success: true,
    data: [{
        name: '张三',
        sex: 1
    },
    {
        name: '李四',
        sex: 0
    }]
}
```

## 工具

砌砖刷墙，打钉上漆都离不开工具。

没有工具寸步难行。

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2Fabe6f47aca482f84d08acc0b9aa84c24e51f18b8.jpg?generation=1616641636942151\&alt=media)

建筑工具

软件开发同样如此，善于利用第三方组件工具类库能大大提升效率。

例如element、antdv等组件库。

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2Fedb20f474bcf979aa1fb702c9ee90c9db5e93241.png?generation=1616641636790277\&alt=media)

element组件库

## 人

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2Ff9d23d950fa49e18832cf9169ca201775f57b557.jpg?generation=1616641637311936\&alt=media)

建筑工人

![avatar](https://760650585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEuTIqYChilFP75xEgL%2Fsync%2F0d15fe1a3c61da2ab925625d0428594962c12fcf.png?generation=1616641643607600\&alt=media)

开发者

不管建筑、软件架构如何设计，最终实施者是要落到具体的人手上。

作为初学者，按照标准规范去实施是最稳妥的。遮罩细节，做好本分工作才能有更好的未来。把握核心思想，化繁为简，以此为依据围绕扩展才能做好架构设计。
