代码之家  ›  专栏  ›  技术社区  ›  David B Arul Murugan.C

接口成员签名参数

  •  -1
  • David B Arul Murugan.C  · 技术社区  · 8 年前

    例如,我有一个 Car 类名称: 汽车 它实现了一个名为: ICar

       public class Car: ICar
    

    二者都 汽车 有一个 Save 方法:

      public bool Save(Car car)
        {some save logic}
    

    拯救 方法,传入 汽车 ICar公司 ,哪个练习更好,还是无关紧要?我在想 ,因为如果这个接口被另一个类继承,它仍然可以工作。

    感谢您的指导,谢谢。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Camilo Terevinto Chase R Lewis    8 年前

    这样想:如果 ICar 预期a Car 作为参数, ICar公司 将明确取决于 汽车 ,而 解耦 是使用界面时需要的。

    如果 ICar公司 汽车 :

    public interface ICar
    {
        void Save(Car car);
    }
    
    public class Car : ICar
    {
        public void Save(Car car) { }
    }
    
    public class Van : ICar
    {
        // Here Van needs to have a Car object, why should it?
        public void Save(Car car) { }
    }
    

    如果 汽车 如果被弃用(例如,被认为过于泛化),则需要重构整个代码。

    相反,如果 ICar公司 取决于 ICar公司 :

    public interface ICar
    {
        void Save(ICar car);
    }
    
    public class Car : ICar
    {
        public void Save(ICar car) { }
    }
    
    public class Van : ICar
    {
        public void Save(ICar car) { }
    }
    

    在这里,如果 汽车 不管存在与否,你都不是 耦合的 它的实施。

    然而,自 ,在实施时,将已经是一个 ,您不需要将其作为参数传递。

    public interface ICar
    {
        // Will save myself
        void Save();
    }
    

    与:

    public interface ICar
    {
        // Will save some ICar
        void Save(ICar car);
    }