아래의 글은 마틴 오더스키,렉스 스푼,빌 베너스 공저 / 오현석,이동욱,반영록 공역, 『Programming in Scala 3/e』,에이콘출판사(2017), CH01의 내용을 기반으로 작성하였습니다.
모둘화 할수 있는 방법
1. 문제
시스템을 이루는 각기 다른 모듈을 따로 따로 컴파일 할 수 있으면 여러 팀이 독립적으로 작업할 때 도움이 된다.
어떤 모둘의 구현체를 다른 것으로 바꿀 수 있다
인터페이스와 구현을 잘 분리할 수 있는 모듈 구조를 제공해야함.
어떤 모듈과 인터페이스를 동일한 다른 모둘로 변경하더라도, 그 모듈 인터페이스에 의존하는 다른 모듈들은 재컴파일 하지 않아야 한다.
모듈을 서로 연결할 방법을 제공해야 한다.
의존관계주입 dependency injection
객체를 모듈로 사용해 외부 프레임워크를 사용하지 않고도 대규모 프로그래밍의 모듈화를 원하는 대로 달성할 수 있는지 살펴볼 것임.
2. Recipe 애플리케이션
스칼라가 규모 확장성 있는 언어로 있기 위한 방법 중 하나는 작든 크든 동일한 구조를 사용
스칼라는 객체를 모듈로 사용한다. 프로그램을 모듈화 하는 시작저믄 테스트 하는 동안 목에 대한 구현으로 사용될 두 싱글톤 클래스
3. 추상화
정의를 객체가 아닌 클래스로 만든다.
4. 모듈을 트레이트로 분리하기
트레이트를 사용해 모듈을 여러 파일로 분리
trait FoodCategories
abstract class Database extends FoodCategories
셀프 타입 : 클래스 안에서 사용하는 모든 List의 타입이 어떤 것인지 가정하는 것
object SimpleDatabase extends Database with SimpleFoods with SimpleRecipies
5. 실행 시점 링킹
실행 시점의 필요에 따라 어떤 모듈을 링크할지 결정 할 수 있다.
6. 모듈 인스턴스 추적
싱글톤 타입 : val database : db.type = db
'독서관련 > Programming in Scala' 카테고리의 다른 글
Scala CH32. 퓨처와 동시성 (0) | 2020.03.29 |
---|---|
Scala CH30. 객체의 동일성 (0) | 2020.03.29 |
Scala CH27. 애노테이션 (0) | 2020.03.29 |
Scala CH26. 익스트랙터 (0) | 2020.03.29 |
Scala CH25. 스칼라 컬렉션의 아키텍처 (0) | 2020.03.29 |