架构师成长之路2-设计思想:如何从“写逻辑”升级为“做设计”

第2篇|设计思想:如何从“写逻辑”升级为“做设计”

“你写的是代码,我写的是系统。”
——架构师的自白

很多程序员在职场中,有这样的感受:

  • “写代码不难,写好代码太难。”
  • “写功能我没问题,写架构我不敢动。”
  • “我能把需求做完,但做不出一个优雅的系统。”

如果说第一篇文章我们解决了**“我为什么要成为架构师”的问题,那么这一篇,就是解决“我该如何迈出第一步”**的问题:

这一篇,我们聊聊**“设计思想”**——程序员从写逻辑到做系统设计的第一道鸿沟。


一、程序员初期最容易陷入的误区

我们先看一个真实的初级代码:

public class OrderService {
    public void createOrder(String userId, String itemId) {
        // 1. 校验库存
        int stock = DB.queryStock(itemId);
        if (stock <= 0) {
            throw new RuntimeException("库存不足");
        }

        // 2. 扣库存
        DB.updateStock(itemId, stock - 1);

        // 3. 创建订单
        Order order = new Order(userId, itemId);
        DB.insertOrder(order);

        // 4. 发短信
        SmsUtil.send("下单成功", userId);
    }
}

看起来没毛病,功能齐全。但从设计角度一看,“耦合满天飞”

  • 数据操作和业务逻辑混在一起;
  • OrderService 既管库存又管短信;
  • 没有扩展性(比如加上优惠券、日志记录怎么办?)

这就是典型的“写逻辑”思维,只是把流程从 A 做到 B,而不是把模块组织得清晰有序。


二、设计思想是“抽象 + 分层 + 解耦”的系统思维

设计思想不是架空理论,它是让代码更好维护、更易扩展、更能应对变化的“组织之术”。

我们来一一拆解。


✳️ 1. 抽象:从“怎么做”转变为“做什么”

写逻辑的思维是:

“怎么把功能跑通?”

设计的思维是:

“这件事的本质是什么?我能不能把它抽象出来?”

在上面的例子中,我们可以将“库存操作”抽象成一个 InventoryService

public class InventoryService {
    public boolean hasStock(String itemId) {
        return DB.queryStock(itemId) > 0;
    }

    public void deduct(String itemId) {
        int stock = DB.queryStock(itemId);
        if (stock <= 0) throw new RuntimeException("没货");
        DB.updateStock(itemId, stock - 1);
    }
}

然后 OrderService 就变得清爽了:

public class OrderService {
    private InventoryService inventoryService = new InventoryService();
    private SmsService smsService = new SmsService();

    public void createOrder(String userId, String itemId) {
        inventoryService.deduct(itemId);
        Order order = new Order(userId, itemId);
        DB.insertOrder(order);
        smsService.send(userId, "下单成功");
    }
}

这就是抽象:把“怎么做”封装成方法,对外只暴露“要做什么”。


✳️ 2. 分层:分工合作、各司其职

设计思想第二个核心是**“分层”**,也是架构师最爱画图的一招。

举个三层架构的例子:

层级职责类示例
Controller接收请求、参数校验OrderController
Service执行业务逻辑OrderService
DAO(Repository)访问数据库OrderRepository

不分层的代码是“炒一锅乱炖”,你一口下去啥都有;
分层后的代码是“分餐式小火锅”,牛肉、蘑菇、丸子各有容器。

示例:

// Controller 层
@PostMapping("/order")
public ResponseEntity<?> createOrder(@RequestBody OrderDTO dto) {
    orderService.createOrder(dto.getUserId(), dto.getItemId());
    return ResponseEntity.ok("下单成功");
}

// Service 层
public void createOrder(String userId, String itemId) {
    if (!inventoryService.hasStock(itemId)) {
        throw new RuntimeException("库存不足");
    }
    orderRepository.insert(new Order(userId, itemId));
}

// DAO 层
public void insert(Order order) {
    // jdbcTemplate 或 ORM 操作
}

这才是架构之美:井然有序,职责分明。


✳️ 3. 解耦:拒绝“连体婴”,拥抱“模块自治”

设计的第三个关键是**“解耦”**。

程序设计的目标不是“跑得快”,而是“能换腿”。

什么叫耦合?

public class OrderService {
    public void createOrder() {
        EmailUtil.sendEmail("order created");
        KafkaProducer.send("order_topic", "created");
    }
}

如果现在你不用 Kafka 改用 RabbitMQ,或从 Email 改为短信通知,怎么办?

所以我们需要使用接口 + 策略的方式:

public interface Notifier {
    void notify(String msg);
}

public class EmailNotifier implements Notifier {
    public void notify(String msg) {
        // 发送邮件
    }
}

public class SmsNotifier implements Notifier {
    public void notify(String msg) {
        // 发送短信
    }
}

然后 OrderService 中只依赖接口:

public class OrderService {
    private Notifier notifier;

    public OrderService(Notifier notifier) {
        this.notifier = notifier;
    }

    public void createOrder() {
        // ...
        notifier.notify("下单成功");
    }
}

你看,换腿不伤身,这才是架构思维。


三、从写逻辑到做设计,程序员的心智跃迁

维度写逻辑做设计
思维方式步骤式流程模块式抽象
关注点怎么实现功能系统是否稳定、易扩展
可扩展性差(加功能必改原逻辑)高(可插拔、可配置)
代码组织混乱耦合分层清晰
复用性
新人上手容易

可以说:

写逻辑是码农的本能,做设计才是架构师的灵魂。


四、程序员如何练习设计思想?五条建议

✅ 1. 把你最近写的功能重构一遍

尝试用“抽象、封装、分层”的思维,把一个复杂业务拆分成:

  • 模块
  • 接口
  • 服务类
  • 工具类

✅ 2. 多画图,用画图来思考设计

  • 画类图(UML)
  • 画模块图
  • 画依赖关系图

工具推荐:ProcessOn、draw.io、PlantUML

✅ 3. 阅读优秀的开源项目(Spring、MyBatis、Sa-Token)

  • 看类是怎么划分的
  • 接口怎么命名
  • 模块怎么组织

✅ 4. 学习《重构》《代码整洁之道》《设计模式》

经典永不过时。尤其推荐 Martin Fowler 的重构书,里面的“坏味道”诊断思维,和设计思想一脉相承。

✅ 5. 找个靠谱的“带教架构师”

最好的成长方式之一是:加入一个技术氛围好的团队,跟着有设计思维的人写代码。


五、结语:写代码者众,做设计者寡

“工匠不满于造物,更要改善工具。”

程序员升级为架构师的第一步,不是学什么框架,也不是画几个图,而是思维方式的转变

从关注一行代码,转向关注模块、结构、协作和演化

这一步,一旦跨出,你就不是写逻辑的人,而是搭建系统的人。


下一篇预告:

第3篇|设计原则基础:代码不烂,全靠六大原则护体
带你彻底掌握 SOLID 原则,写出可扩展、可复用、可维护的优雅代码。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值