본문 바로가기

분류 전체보기

ch11. 합성과 유연한 설계 04. 믹스인 상속을 사용한다면 다른 클래스를 간편하게 재사용하고 점진적으로 확장할 수 있지만 부모 클래스와 자식 클래스와 강하게 결합되기 떄문에 수정과 확장에 취약한 설계를 낳게 된다. 믹스인은 객체를 생성할 때 코드 일부를 클래스 안에 섞어 넣어 재사용하는 기법을 가르키는 용어다. 합성이 실행 시점에 객체를 조합하는 재사용 방법이라면 믹스인은 컴파일 시점에 필요한 코드조각을 조합하는 재사용 방법 기본 정책 구현하기 abstract class BasicRatePolicy { def calculateFee(phone: Phone): Money = phone.calls.map(calculateCallFee(_)).reduce(_ + _) protected def calculateCallFee(call: C..
ch.10 상속과 코드 재사용 추상화에 의존하자. NightlyDiscountPhone의 가장 큰 문제점은 Phone에 강하게 결합돼 있다. 즉 Phone이 변경될 경우 함께 변경될 가능성이 높다. 이 문제를 해결하는 가장 일반적인 방법은 자식 클래스가 부모클래스의 구현이 아닌 추상화에 의존하도록 만드는 것이다. 상속을 도입할 때 따르는 두가지 원칙 두 메서드가 유사하게 보인다면 차이점을 메서드로 추출하라. 메서드 추출을 통해 두 메서드를 동일한 형태로 보이도록 만들 수 있다. 부모 클래스의 코드를 하위로 내리지 말고 자식 클래스의 코드를 상위로 올려라. 부모 클래스의 구체적인 메서드를 자식 클래스로 내리는 것보다 자식 클래스의 추상적인 메서드를 부모 클래스로 올리는 것이 재사용성과 응집도 측면에서 더 뛰어난 결과를 얻을 수 있다. ..
ch.09 유연한 설계 03. 의존성 주입 외부로 부터 독립적인 객체가 인스턴스를 생성한 후 이를 전달해서 의존성을 해결하는 방법을 의존성 주입이라고한다. 생성자 주입 : 객체를 생성하는 시점에 생성자를 통한 의존성 해결 setter 주입 : 객체 생성 후 setter 매서드를 통한 의존성 해결 메세드 주입 : 메서드 실행 시 인자를 이용한 의존성 해결 Movie movie = new Movie ("아바타", new 객체) 위와 같은 예시가 생성자 주입 movie.setName("아바타") 위와 같은 예시 setter 주입 movie.calculateDiscountAmount(screening, new AmountDiscountPolicy(....)) 위와 같은 예시가 메서드 주입 사실 위와 같은 메서드 의존성 주입의 한 종류..
명령형 프로그래밍과 선언형 프로그래밍 안녕하세요 남갯입니다 오늘은 명령형 프로그래밍과 함수형 프로그래밍에 대한 정리를 해보려고 합니다. 일단 명령형 프로그래밍과 대비되는 단어는 선언형 프로그래밍입니다 선언형 프로그래밍이란? 선언형 프로그래밍은 모든 동작에 대한 기능들을 전부 선언해두고 사용하는것입니다. 예를들어 예전에 제가 컴포즈를 설명할때 소개했었던 내용인데, 컴퓨터는 선언된 함수들을 가지고 무엇을 할지를 만드는 프로그래밍이다. (What?) 선언형 프로그래밍에는 논리적 프로그래밍과 함수형 프로그래밍이 속해있다. 논리적 프로그래밍이란? 논리형 프로그래밍(영어: Logic programming)은 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반을 둔다.[1] 논리형 프로그래밍에서 볼 수 있는 일종의 논리 문장들은 (반드..
DI(Dependency Injection) 와 IOC(inversion of control) 안녕하세요 남갯입니다 github.com/namget/object_study 오브젝트 5장 일단 오브젝트 스터디하는 내용의 과제로 오늘은 DI와 IOC를 알아보고 정리하는 시간을 가져보려고 합니다. DI 의존성 주입 의존성 주입이란? 소프트웨어 엔지니어링에서 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. [위키 백과] 의존성 주입 ko.wikipedia.org/wiki/%EC%9D%98%EC%A1%B4%EC%84%B1_%EC%A3%BC%EC%9E%85 의존성 주입 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 소프트웨어 엔지니어링에서 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존..
[SOLID] 객체지향설계 안녕하세요 남갯입니다 기존에 SOLID 원칙에 대해서 알고있었고 이전에 정리해둔 포스팅도 있지만 이번 오브젝트 책을 다시 읽고 정리하는 과제를 진행하게 되서 정리해보려고 합니다. 이전글 namget.tistory.com/entry/SOLID-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%EC%84%A4%EA%B3%84 [SOLID] 객체지향설계 안녕하세요 남갯입니다. 오늘은 객체지향설계 원칙인 SOLID에 대해서 포스팅해보려고합니다. 이번스터디에서 공부했던 내용을 정리해보고 스터디의 과제인 SOLID를 소개하는 유튜브를 보고 SOLID namget.tistory.com 실제 위키백과에서는 로버트 마틴이 2000년대 초반 명명한 객체지향 프로그래밍 및 설계의 다섯가지 기본원칙을 마이클 ..
알약M 그린약방으로 치킨먹기 안녕하세요 남갯입니다. 오늘은 그린약방으로 치킨먹은 후기를 알려드리려고 합니다. 매일 검사와 청소 등등 폰케어를 위해 여러가지를 진행하면서 알약을 모으고 있었고 블로그에 쓴 글 덕분에 친구추천도 간간이 들어오고 있었습니다 이번에 행운알약 열기라는 이벤트도 참여해서 매번 알약을 모았어요 요즘 행운 알약 이벤트도 하는것 같으니까 10~ 50000알약도 준다고 하네요 저는 20 몇번 나오고 꾸준히 검사와 친구추천 등등 진행하다보니 벌써 치킨 먹을 수 있는 알약을 모았더라구요 이번에 햄버거 쿠폰도 나온거같아서 나중에는 햄버거도 먹어보려구요! 이렇게 반반 치킨도 시켜먹었어요! 폰케어도 해주고, 치킨도 먹을수있고 일석이조인것 같아요! 추천인 관련 내용 2020.11.20 - [후기 & 꿀팁/후기] - 알약M 그린약..
[안드로이드] hilt code-lab 안녕하세요 남갯입니다. 오늘은 hilt code lab 에 대해 공부한것을 정리해보도록 하겠습니다. 힐트는 기존 Dagger(단검)가 사용하기 복잡하여 많은 사용자들이 사용을 못하고 있는부분을 Hilt(단검 손잡이) 더 쉽게 사용하도록 만들어주는 라이브러리입니다. 대부분 ServiceLocater 패턴을 통해 런타임에 생성해서 주입하거나 Koin을 이용하거나, 혹은 Dagger를 이용하겠지만 Hilt를 이용하면 Dagger를 더 쉽게 이용 가능합니다. developer.android.com/codelabs/android-hilt?hl=ko#1 Using Hilt in your Android app | Android 개발자 | Android Developers In this codelab, you'll b..