代码之家  ›  专栏  ›  技术社区  ›  Munerz

服务的松耦合与紧耦合

  •  0
  • Munerz  · 技术社区  · 7 年前

    我了解,我们几乎一直都希望在应用程序内部的组件之间实现松耦合,这是为什么。

    但在下面的示例中,如果有人能够解释为什么当我们将服务作为参数传递给构造函数时,它没有紧密耦合,那么我就可以理解引擎盖下正在发生的逻辑。

    export class Test(){
    
    dataResults;
    
    constructor(service: testService){
    
    this.dataResults = service.getData()
    
    }
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Pranay Rana    7 年前

    service:TestService;
    constructor(){
    this.service = new TestService();
    this.dataResults = service.getData()
    }
    

    TestService ActualService

    public class A{
      A(IB service) {//here IB is interface , on which A class is depedant
       //use service here 
      }
    }
    
    public class B : IB { }
    public class C : IB { }
    

    A a = new A(new B());
    or 
    A a = new A(new C());
    


    [{ provide: Logger , useClass: Logger}]
    

    constructor(service: Logger){
      this.dataResults = service.getData()
    }
    

    [{ provide: Logger , useClass: BetterLogger}]
    or 
    [{ provide: Logger , useClass: TestLogger}]
    

    MockService https://angular.io/guide/testing

    BetterLogger and TestLogger Logger https://angular.io/guide/dependency-injection

    Dependency Injection SOLID