关于 laravel:template-method-and-plugins
面向 Laravel 开发的技能,介绍如何保持核心流程稳定并提供扩展点,涵盖模板方法和可插拔策略,以及按键或配置注册、选择实现。
主要功能
- 01模板方法算法骨架
- 02子类钩子方法
- 03基于接口的策略
- 04通过注册表选择实现
- 05单独测试各项实现
适用场景
- 01稳定导入流程并改变处理步骤
- 02添加支付网关实现
- 03用注册类替代 switch 语句
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:template-method-and-plugins安装后在 Claude Code 中输入/laravel:template-method-and-plugins确认已加载。
详细介绍
模板方法与可插拔策略
保持核心流程稳定;通过小型类实现扩展。
模板方法
使用定义算法骨架的基类;子类重写钩子。
abstract class Importer {
final public function handle(string $path): void {
$rows = $this->load($path);
$data = $this->normalize($rows);
$this->validate($data);
$this->save($data);
}
abstract protected function load(string $path): array;
protected function normalize(array $rows): array { return $rows; }
protected function validate(array $data): void {}
abstract protected function save(array $data): void;
}
策略/插件
定义接口;注册实现;根据键/配置进行选择。
interface PaymentGateway { public function charge(int $cents, string $currency): string; }
final class StripeGateway implements PaymentGateway { /* ... */ }
final class BraintreeGateway implements PaymentGateway { /* ... */ }
final class PaymentsRegistry {
/** @param array<string,PaymentGateway> $drivers */
public function __construct(private array $drivers) {}
public function for(string $key): PaymentGateway { return $this->drivers[$key]; }
}
优先新增类,而不是修改 switch 语句。单独测试各个实现。
评论
支持 Markdown