On this page
단일 접근 원칙
수정하기
문서 생성 2022-06-15 22:35:49 최근 수정 2022-06-15 23:26:43
On this page
한 모듈에서 제공하는 모든 서비스는 저장된 값인지, 계산된 값인지 상관없이 단일한 방식으로 접근이 가능해야 한다. -Bertrand Meyer
다음과 같이 Book
클래스로 인스턴스 book1
, book2
를 생성했을 때, 가격을 알고 싶다면 price
가 필드인지, 계산된 값(함수 호출)인지 구분할 수 없다. 같은 방식으로 접근하는 것이다. 인스턴스를 생성한 클라이언트가 가격이 저장된 가격인지 계싼된 것인지 신경쓰거나 알 필요가 없어야 한다는 것
class Book {#name#price#yearconstructor(name, price, year) {this.#name = namethis.#price = pricethis.#year = year}get name() {return this.#name}get price() {return this.#year < 2010 ? this.#price - this.#price * 0.5 : this.#price}get year() {return this.#year}}const book1 = new Book('리팩터링 1판', 25000, 2002)const book2 = new Book('리팩터링 2판', 35000, 2020)console.log(book1.price)console.log(book2.price)
단일 접근 원칙을 따르면 저장된 값을 사용하거나 계산을 하는 구현 방식을 쉽게 바꿀 수 있는 유연성을 얻게 된다. 클라이언트 입장에선 내부 구현에 신경 쓸 필요가 없게 된다. -> 캡슐화