728x90
728x90
많은 클래스가 하나 이상의 자원에 의존한다. 예를들어 맞춤법 검사기는 사전에 의존하는데, 이런 클래스를 정적 유틸리티 클래스로 구현한 모습을 드물지 않게 볼 수 있다. public class SpellChecker { private static final Lexicion dictionary = ...; private SpellChecker() { } // 객체 생성 방지 public static boolean isValid(String word) { ... } public static List suggestions(String typo) { ... } } 비슷하게 싱글턴으로 구현하는 경우도 흔하다. public class SpellChecker { private final Lexicon dictionar..
이 책을 사주며 꼭 빨리 성장하라고 했던 선배(라고 부르고 은인 + 스승이라 부른다)의 당부를 잊고 벌써 몇개월을 소비한 것인가... 빨리 읽어야지 종종 단순히 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있다. 객체 지향적으로 사고하지 않는 이들이 종종 남용하는 방식이지만, 분명 나름 쓰임새가 있다. 예를들어 java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있고, java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(or 팩터리)를 모아놓을 수도 있다(자바8부터는 이런 메서드를 인터페이스에 넣을 수 있다). 마지막으로, final 클래스와 관련한 메서드들을 모아놓을 때도 사용..
SOLID가 뭐냐구요 ? 네 그 '솔리드' 아닙니다. 이제부터 자세히 알아봅시다! SOLID 원칙의 기원 객체지향 타입의 프로그래밍은 소프트웨어 개발의 새로운 설계를 불러왔다. 개발자가 데이터를 같은 목적/기능의 클래스로 묶을 수 있으며, 전체 애플리케이션과 상관없이 단일 목적을위해 이용 할 수 있다. 하지만, 객체지향프로그래밍은 유지보수가 어렵고, 코드가 혼란스러워지는 것 자체를 예방하지는 않는다. 이런 문제점을 보완하고자 하는 취지에서 Robert.C Martin은 다섯 가지 지침을 개발했다. 다섯 가지 원칙을 통해서 개발자는 읽기 쉽고 유지 보수가 쉬운 프로그램을 쉽게 만들 수 있게된다. 다음 다섯 가지 원칙을 S.O.L.I.D라고 한다. 각 알파벳의 의미는 아래와 같다. S : Single Res..
예전에 구글 스타트업 센터에서 플러터를 알려주는 행사를 진행했었고, 참여해서 간단한 앱을 만들어 본적이 있다(거의 예제를 복붙하는 방식이긴 했지만...!) 플러터가 다트라는 언어를 이용한 것이고.... 또 크로스 플랫폼이니 해서 안드로이드, ios 전부다 호환이 되어서 앱 개발자에게 유용하고, 또 플러터는 최근(작년 기준)에 구글에서 공식 지정 언어로 선정되었다는 그런 얘기(추가적으로 앵귤러 얘기를 하면서 뒷통수를 조심해야한다는 농담도...)를 들었었다. 웹 개발자를 지향하고 있지만 앱 개발에 흥미가 없는 것은 아니다. 처음 개발자가 되고 싶다고 생각한 이유는 모바일 앱을 만들고 싶어서였다. 아니 정확히는 창업 아이템으로 만들어야 했는데 만들지 못했던 아쉬움이 커서였다. 웹 개발자인 나에게 안드로이드와 ..
지난 [디자인 패턴] - 2. 어댑터 패턴 (Adapter Pattern)에 이어서 유사한 형태의 브릿지 패턴에 대해 설명해보려고 한다. 브릿지 패턴이란.. 브릿지 패턴은 "구현(implementation)으로부터 추상(abstraction) 레이어를 분리하여 이 둘이 서로 독립적으로 변화할 수 있도록 한다." 즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현을 한다. (두개의 다른 계층은 하나는 추상, 하나는 구현이다. 이는 서로 다른 계층의 커플링을 약화시키며 협력은 가능하도록 하는 패턴이다) 브릿지 패턴 클래스 다이어그램 Abstraction 기능 계층의 최상위 클래스이며 추상 인터페이스를 정의한다. Implementor에 대한 레퍼런스를 유지한다. 구현 부분에 해당하는 클래스를 인스턴스를 가..
저번 강의 [디자인 패턴] - 1. 전략(Strategy) 패턴 에 이어서 이번 포스팅에는 '어댑터 패턴'에 대한 내용을 정리하고자 한다. 어댑터 패턴이란... 어댑터 패턴은 연관성이 없는 두 객체를 묶어 사용할 때 쓰이는 패턴이다. (= 클라이언트가 요구하는 인터페이스와 재사용하려는 모듈의 인터페이스가 일치하지 않을 때 사용할 수 있는 패턴) 어댑터 패턴이 적용된 예는 SLF4J라는 로깅 API이다. SLF4J는 단일 로깅 API를 사용하면서 자바 로깅, log4j, LogBack 등의 로깅 프레임워크를 선택적으로 사용할 수 있도록 해 주는데, 이 때 SLF4J가 제공하는 인터페이스와 각 로깅 프레임워크를 맞춰 주기 위해 어댑터를 사용하고 있다. 어댑터 패턴은 (SOLID 원칙에서 OCP)개방 폐쇄 원..