对象属性还是方法参数

154 天前
 aababc

在项目开发的过程中经常遇到的一个选择模式

class A
{
    private $dep;

    public function __construct($dep)
    {
        $this->dep = $dep;
    }

    public function handle()
    {
        $this->f1();
        $this->f2();
    }

    public function f1()
    {
        // 这里也依赖 $dep
    }

    public function f2()
    {
    }
}

还有下边这种模式

class A
{
    public function handle($dep)
    {
        $this->f1($dep);
        $this->f2();
    }

    public function f1($dep)
    {
        // 这里也依赖 $dep
    }

    public function f2()
    {
    }
}

针对第一种形式把参数依赖在对象内部,在调用的时候感觉相对容易,针对第二种形式感觉比较方法依赖注入,大家有没有方法论来评估这两种情况应该怎么选择

873 次点击
所在节点    编程
6 条回复
Ayanokouji
154 天前
为啥发 go 里边
aababc
154 天前
@Ayanokouji 我还没有完成就发布了,不知道点击到了啥
BeijingBaby
154 天前
都可以啊,一个依赖被多处使用就构造传入。单次使用,可以方法传入。
按需选择。
happinessnch
154 天前
OOP 的话要看 dep 和 A 的抽象关系,也看业务需求,也看设计思路。
时间充裕先设计再开发,deadline 要到了先干再说,又不是不能用。
aababc
154 天前
@happinessnch 老哥能不能展开说说看
happinessnch
154 天前
比如 A 订单,dep 是 VIP 对象,
为了方便计算折扣,A 持有一个 VIP 对象就很不合适。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1011152

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX