본문 바로가기

전체 글8

[레벨 1 회고] 전략패턴을 사용해보며 미션을 진행하다보면 객체들이 할 수 있는 다양한 행위가 설계해야 하는 경우가 생긴다. 행위를 변경해주기 위해서는 개발자가 직접 수정해주어야 하는데 이는 OCP를 위배하게 되는 요소중 하나이다. 이러한 문제들을 해결하는 방법 중 하나로 디자인 패턴 중 하나인 전략패턴을 제시해본다. 전략패턴을 사용하기 전 생기는 문제점들 자전거라는 예시를 통해서 한번 살펴보도록 하자. 자전거라는 클래스는 display 메서드를 통해서 이름을 말해주며, fuel 메서드를 통해서 움직이는데 필요한 에너지를 말해주는 역할을 수행한다. public class Bicycle { public void display() { System.out.println("자전거 입니다."); } public void fuel() { System.o.. 2022. 4. 18.
[레벨 1 회고] 정적 팩터리 메서드 / 생성자와 부생성자 레벨 1 첫 미션인 자동차 경주 게임을 설계하면서 정적 팩터리 메서드에 대해서 많은 고민을 할 수 있었다. 그리고 미션을 3개 더 진행해보면서 나만의 기준을 만들 수 있었다. 이번 글에서는 글쓴이가 정적 팩터리 메서드 / 생성자와 부생성자를 사용하는 기준에 대해서 간단하게 소개할까 한다. 정적 팩터리 메서드의 사용 시점 먼저 정적 팩터리 메서드에 대해서는 아래 글에서 설명을 했으니 자세한 설명은 하지 않고 넘어가려 한다. 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 서론 객체를 생성 할 때 일반적으로 사용되는 방법은 `public 생성자`를 사용하는 방법일 것이다. 하지만 `생성자` 말고도 객체를 생성하는 방법이 있는데 바로 오늘 포스팅의 주제인 `정적 팩터리 hoonstack.tistory... 2022. 4. 17.
[레벨 1 회고] TDD에 익숙해짐과 동시에 좋은 테스트 코드 작성하기 테크코스 합류 전 TDD, 테스트 코드가 무엇인지는 알고 있었지만 TDD는 하지도 않았을 뿐더러, 테스트 코드는 매번 작성방법의 기준이 달랐었고 작성하더라도 왜 작성해야 하는지 이유가 명확하지 않은 상태에서 작성했었다. 그때는 테스트 코드는 당연히 작성해야하니깐 작성해야 겠다는 생각을 했었던 것 같다. 테크코스 합류 후, 그리고 지금 레벨 1을 마치는 시점에서 TDD, 테스트 코드를 꾸준히 수행한 결과 부족하지만 TDD, 테스트 코드의 목적과 나만의 작성 기준을 만들 수 있었다. TDD, 왜 권장하는가? 이전에 TDD로 설계를 하지 않을 경우 보통 다음과 같은 절차를 통해서 기능이 구현되었었다. 1. 기능에 맞는 설계를 고민하고 각 클래스에 어떤 역할을 지정할지 고민한다. 2. 설계와 대략적인 구현 고민.. 2022. 4. 17.
[디자인 패턴] 옵저버 패턴(Observer Pattern) 찍먹해보기 옵저버 패턴이란 옵저버 패턴(Observer Pattern) 이란 객체의 상태 변화를 관찰하는 관찰자, 즉, 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 간단안 예시를 통해서 알아보자. 크루들은 코치가 하는 일들에 대해서 알림을 받아야 한다. 코치가 `공지를 한다`면 모든 크루들은 코치가 공지를 했다는 내용에 대해서 알아야 한다. 브라운 객체는 코치 인터페이스의 구현체이다. 코치의 기능은 크루들의 등록하고, 등록 해제하고, 크루들에게 알림을 주는 기능을 수행할 수 있다. 루키 객체는 크루 인터페이스의 구현체이다. 크루의 기능은 간단하게 자신의 상태를 업데이트하는 기능을 가진다. 이를 도식화 하면 다음과 같.. 2022. 4. 7.