aababc
V2EX  ›  编程

对象属性还是方法参数

  •  
  •   aababc · Jan 24, 2024 · 1788 views
    This topic created in 867 days ago, the information mentioned may be changed or developed.

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

    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()
        {
        }
    }
    

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

    6 replies    2024-01-24 13:50:00 +08:00
    Ayanokouji
        1
    Ayanokouji  
       Jan 24, 2024
    为啥发 go 里边
    aababc
        2
    aababc  
    OP
       Jan 24, 2024
    @Ayanokouji 我还没有完成就发布了,不知道点击到了啥
    BeijingBaby
        3
    BeijingBaby  
       Jan 24, 2024
    都可以啊,一个依赖被多处使用就构造传入。单次使用,可以方法传入。
    按需选择。
    happinessnch
        4
    happinessnch  
       Jan 24, 2024
    OOP 的话要看 dep 和 A 的抽象关系,也看业务需求,也看设计思路。
    时间充裕先设计再开发,deadline 要到了先干再说,又不是不能用。
    aababc
        5
    aababc  
    OP
       Jan 24, 2024
    @happinessnch 老哥能不能展开说说看
    happinessnch
        6
    happinessnch  
       Jan 24, 2024
    比如 A 订单,dep 是 VIP 对象,
    为了方便计算折扣,A 持有一个 VIP 对象就很不合适。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3114 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:50 · PVG 22:50 · LAX 07:50 · JFK 10:50
    ♥ Do have faith in what you're doing.