티스토리 뷰

의존성 주입에 대한 설명이 여러가지 있는데, 코드의 예가 한가지 있어 기록해 둔다.

 

리포지트로는 서비스클래스의 인수로서 주입받는 설계로 만든다.

 

NG

class Service:
    ~~ 생략
    repository = TaskRepositoryMysql()
    ~~ 생략

서비스 내에서 리포지토리를 불러내면 1개의 리포지토리니 의존한 클래스가 되버림

 

OK

class Service:
    def __init__(self, repository):
        self.repository = repository
    ~~ 생략
    
    
service = Service(TaskRepositroyMysql)
service.save(task)

외부에서 인수로서 리포지토리를 받으면

서비스 클래스 이용시에 리포지토리가 지정되기 때문에 의존성이 없어짐