객체지향
-
확장성을 고려하여 객체지향적으로 영업시간 구현하기프로젝트/BLUE DELIVERY 2021. 7. 29. 23:35
blue-delivery 프로젝트를 진행하면서 주로 '확장 가능한 코드'를 작성하기 위한 고민들을 하였습니다. 하나는 영업시간을 구현하면서 했던 고민이고, 하나는 전체적인 구조에 대한 고민입니다. 이번 글에서는 확장성있게 영업시간을 구현하기 위한 고민을 정리해보았습니다. 입력받은 영업시간 정책을 어떻게 구분하고, 각 요일로 변환할까? (실제론 UI가 없지만) 대략 아래와 같이 입력받는다고 가정합니다. 주말 포함이라면 한가지 케이스의 오픈/마감 시간을 입력받아야 하고, 주말 별도라면 평일, 토요일, 일요일 총 3가지 케이스를 입력받아야 합니다. 그리고 어떤 정책(주말 포함or별도)이냐에 따라 적절한 요일로 변환해서 데이터베이스에 저장해야 합니다. (예를 들어, 위의 그림처럼 평일, 토요일, 일요일을 입력받..
-
의존성을 '조절'하기 위해 인터페이스와 구현을 분리하자개발/OOP, Design Pattern 2021. 2. 21. 00:56
조영호님의 오브젝트 챕터1 을 읽고 배운점 객체지향은 객체의 자율성을 높여 응집성을 높이고, 객체간의 의존성을 조절 하여 이해하기 쉽고 변경하기 쉬운 코드를 작성하는 것이 중요하다. 그런데 왜 객체간의 의존성을 '낮추는 것'이 아닌 '조절' 일까? 자율성을 높여보자 다음과 같이 매표원 역할을 하는 TicketSeller 클래스가 있다. 이 클래스는 표를 판매하기 위해 TicketOffice 를 가지고 Audience 파라미터를 참조한다. 의존성 측면에서 보면 문제가 없어보이지만, TicketSeller가 임의로 TicketOffice의 상태를 변경하고 있다. public class TicketSeller { private TicketOffice ticketOffice; public void sellTo(..