当项目需求升级时,需要在一个成员方法的最后加入一些新的代码,这应该如何解决,请看例子

发布于 2022-09-11 16:47:44 字数 661 浏览 28 评论 0

比如,第一版的代码为:

//购买商品api
public function buyGoods(){
    //参数验证
    $validate->validateParam();
    //购买逻辑
    $goods->buy();
}

这时候,第一版已经稳定运行了,我们希望不再过多修改这个成员方法,但第二版的需求来了,那就是要在这个函数处理完之后再加入一些处理函数,比如第二版的代码为:

    //购买商品api
    public function buyGoods(){
        //参数验证
        $validate->validateParam();
        //购买逻辑
        $goods->buy();
        //用户积分明细录入
        $user->credit();
        //用户资金明细录入
        $user->money();
        
        ...等等n个新加函数
    } 

这个credit()和money()等是后加入了的,如果想加入这些函数就必须修改buyGoods(),这样就破坏了原来的buyGoods()。
有没有一种设计模式,可以让成员方法能在不改变原有代码的前提下轻易扩展?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我们只是彼此的过ke 2022-09-18 16:47:44

如果不依赖调用的话,可以用mq方式解耦。buyGoods中做生产者,往mq里丢数据就行了。消费者自己去做消费。

时光清浅 2022-09-18 16:47:44

可以使用 event()

风筝有风,海豚有海 2022-09-18 16:47:44

如果你要保留这个API的话就新写个API啊。。如果不保留的话改不改有什么关系嘛。

白衬杉格子梦 2022-09-18 16:47:44

装饰器模式?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文