본문 바로가기

클린소프트웨어6

State Pattern 이해하기 아래 내용은 클린 소프트웨어의 일부 내용을 재편집한 내용입니다. 스테이트 패턴 왜 이 패턴을 쓸까? 스테이트 패턴을 이해하기 위해서는 유한 상태 기계(FSM: finite state machine) 를 먼저 이해해보자. 이 다이어그램을 상태 전이 다이어그램(STD: state transition diagram) 이라 한다. 모서리가 둥근 상자는 상태(state) . 상태를 연결하는 화살표는 전이(transtion). 전이에는 이벤트(event) 의 이름과 그 이벤트에 따르는 행동(action) 이 이름표가 붙는다. 만약 기게가 Locked 상태가 있는데 coin 이벤트를 받는다면, unlocked 상태로 전이하고 unlock 행동을 호출 만약 기계가 Unlocked 상태에 있는데 pass 이벤트를 받는다.. 2021. 7. 14.
클린 소프트웨어 책에서 말하는 VISITOR PATTERN이란? 이 책에서 가장 서두에 쓰여져 있는 VISITOR PATTERN을 쓰기 위해서 문제를 제기하는데, 그 문제는 바로 이것입니다. "클래스 계층 구조에 새로운 메소드를 추가할 필요가 있지만, 그렇게 하는 작업은 고통스럽거나 설계를 해치게 된다." 이런 문제는 흔하게 발생합니다. 이전 포스트했던 클린 소프트웨어 책에서 말하는 어탭터패턴은 무엇인가?에서도 마찬가지의 문제로 어탭터 패턴을 통해서도 해결방안을 찾았다면 이번에는 비지터 패턴을 활용해서 해결하는 방법을 살펴봅시다. 우리는 흔히 SOLID 원칙이라 불리는 객체지향 원칙이 있습니다. 디자인패턴은 이런 SOLID 원칙을 보다 더 SOLID 하게 만들기 위한 하나의 패턴입니다. 비지터는 변경해야 할 계층 질서에 새로운 파생형을 자주 추가할 필요가 없는 프로그.. 2020. 11. 8.
클린 소프트웨어 책에서 말하는 어탭터 패턴이란? 디자인 패턴중 어탭터 패턴이라는 것이 있습니다. 위키에서 말하길 어탭터 패턴은 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 클린 소프트웨어 예시로 설명하는 어탭터 패턴을 활용하는 예시는 아래와 같습니다. 위와같은 상황에서 Light가 서드파티에서 사온 것이라서, 소스코드가 없을 수도 있습니다. 아니면 Switch로 제어하고 싶은 다른 클래스가 있는데, 그 클래스가 Switchable로부터 파생받을 수 없다면 어떻게 해야 할까요? 여기서 ADAPTER 패턴이 등장합니다. 아래 그림은 클라이언트가 제어할 수 없는 Light 라는 클래스가 등장할.. 2020. 11. 8.
로버트 마틴이 말하는 Factory Pattern 이란 무엇인가? Photo by Joshua Sortino on Unsplash 반 버논의 도메인 주도 설계에서 팩토리 패턴에 대한 설명이 나옵니다. 반버논이 말하는 팩토리 패턴이란? 이 때와 반버논 책과 중복된 내용도 있지만, 평소 팩토리패턴에 대해서 생각하던 부분과 마침 책에서 다시와서 읽으면서 느낀바를 다시금 정리하고자 관련 내용을 적습니다. 배경 클린 소프트웨어 라는 책은, 객체지향프로그래밍 원칙인 SOLID에 입각한 샘플 프로젝트 코드와, 물론 SOLID도 설명하구요. 마찬가지로 SOLID 원칙 중, 의존 관계 역전 법칙(DIP)에 해당하는 부분을 설명하기 위해 팩토리 패턴을 언급합니다. 개인적으로, DIP를 위해서 다양한 방법이 존재하는데, 템플릿 메소드 패턴- 전략패턴등 여러 방법이 있다고 생각합니다. 팩토.. 2020. 9. 9.
PayrollSystem 프로젝트에서 디자인 패턴은 어떻게 사용되었는가?(feat. 클린 소프트웨어) 들어가기 '클린 소프트웨어 - 로버트 마틴 저자' 에서 payroll 아키텍처 코드를 보고... Slipp 스터디에서 디자인패턴에 대한 학습을 하면서, 클린 소프트웨어 책을 학습하고 있습니다. (이 책의 좋은 점은 따로 또 포스팅하겠습니다.) 책의 일부분으로 로버트마틴이 PayrollSystem 코드가 나오는데, 그 부분을 보고 이해한 부분을 적어볼까합니다. 어떻게 만들어졌을가? 이 책에서는 총 5가지의 명세가 나오고 이를 해결하기 위해 다음과 같은 패턴을 활용합니다. 1. 커맨드 패턴와 액티브 오브젝트 패턴 2. 템플릿 메서드와 스트레티지 패턴 3. 퍼사드 패턴 4. 싱글톤과 모노스테이트 패턴 5. 널 오브젝트 패턴 코드에서 어떻게 사용되고 있는지 확인해봅시다. 각 패턴에 대한 자세한 설명은 스킵하고,.. 2020. 9. 9.
단위 크기:패키지 응집도의 원칙 Photo by Scarbor Siu on Unsplash 로버트 마틴의 클린 소프트웨어의 책 내용을 발췌하여, 정리 후 저의 내용과 함께 적어내렸습니다. 들어가기 여기서 우리는 앞서 언급한 6가지 원칙 중, 패키지 응집도와 관련된 원칙 3가지를 살펴볼 예정입니다. 패키지 응집도 원칙 세 가지는 개발자가 어떻게 클래스를 패키지에 분류해 넣을지 결정할 때 도움이 됩니다.이 원칙을 적용하기 전 클래스와 클래스 상호 관계가 일부분이라도 밝혀져 있어야 한다. 즉, 이 원칙들은 클래스를 분류할 때 '상향식'접근 방법을 따릅니다. 1. 재사용/릴리즈 등가 원칙(Release-Reuse Equivalency Principle) -REP 재사용의 단위가 릴리즈의 단위다. 이 부분을 읽으면서 가장 먼저 드는 생각은, ".. 2020. 9. 5.