Example of Conditional Pattern for Easy Modification

DEX450 - Module 13: Strategies for Designing Efficient Apex Solutions

📄 第 349 页 🎬 视频课程

课程章节介绍

今天我们来聊聊Salesforce中的触发器(Trigger)设计模式,特别是关于如何让我们的代码更易于修改和扩展。 首先,想象一下你在写一个触发器,这个触发器会在记录插入或更新时执行一些操作。你可能会写出这样的代码: ```apex if (Trigger.isBefore && Trigger.isInsert) { // 在记录插入之前做一些事情 } else if (Trigger.isAfter && Trigger.isInsert) { // 在记录插入之后做一些事情 } else if (Trigger.isBefore && Trigger.isUpdate) { // 在记录更新之前做一些事情 } else if (Trigger.isAfter && Trigger.isUpdate) { // 在记录更新之后做一些事情 } ``` 这种写法看起来挺直观的,对吧?每个条件分支都对应一个特定的触发器事件组合。但是,如果你以后需要添加新的功能,比如在记录插入之后做一些额外的事情,你会发现你只需要在`After/Insert`的分支中添加代码,而不需要改动其他部分。这就是所谓的“易于扩展”。 但是,如果你需要在`Before/Insert`上添加新的业务逻辑,你可能就需要修改现有的条件分支了。这可能会导致代码变得复杂,难以维护。 那么,有没有更好的方法呢?专家们建议,我们可以预先为所有可能的触发器事件组合都写好分支,即使有些分支暂时是空的。这样做的好处是: 1. ,可重复使用性和通用性,:所有的触发器事件都被覆盖了,代码更加通用,可以在不同的场景下重复使用。 2. ,易于修改,:当你需要添加新功能时,你只需要在相应的分支中添加代码,而不需要改动现有的条件逻辑。这样,你的代码结构会更加稳定,修改起来也更加轻松。 举个例子,你可以这样写: ```apex if (Trigger.isBefore && Trigger.isInsert) { // 在记录插入之前做一些事情 } else if (Trigger.isAfter && Trigger.isInsert) { // 在记录插入之后做一些事情 } else if (Trigger.isBefore && Trigger.isUpdate) { // 在记录更新之前做一些事情 } else if (Trigger.isAfter && Trigger.isUpdate) { // 在记录更新之后做一些事情 } else if (Trigger.isBefore && Trigger.isDelete) { // 在记录删除之前做一些事情 } else if (Trigger.isAfter && Trigger.isDelete) { // 在记录删除之后做一些事情 } ``` 这样,无论你以后需要添加什么新的业务逻辑,你都可以在相应的分支中添加代码,而不需要改动现有的条件结构。这就是为什么这种模式被称为“易于修改”的原因。 总结一下,预先为所有可能的触发器事件组合写好分支,不仅能让你的代码更加通用和可重复使用,还能让你在添加新功能时更加轻松,不需要担心破坏现有的代码结构。希望这个讲解对你有帮助!