Home
Alexander Choi
Cancel

3.상속보단 조립

상속 상위 클래스의 기능을 재사용, 확장하는 방법으로 활용 단점 상위 클래스 변경 어려움 상위클래스를 변경 시 변경의 여파가 계층도를 따라 전파됨 클래스 증가 상속 오용 Container를 사용하기 위해서는 put(), extract() 사용법을 정확히 모른다면 ArrayList.add(), remove() 를...

6.DIP

고수준 모듈, 저수준 모듈 고수준 모듈 의미 있는 단일 기능 제공 상위 수준의 정책 구현 저수준 모듈 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능 실제 구현 고수준이 저수준에 직접 의존하면..? 저수준 모듈 변경 → 고수준 모듈에 영향을 줌 Dependency Inversion Principle (DI...

5.의존과 DI

의존 기능 구현을 위해 다른 구성 요소를 사용하는 것 의존은 변경이 전파될 가능성을 의미 순환의존 순환 의존 → 변경 연쇄 전파 가능성 의존하는 대상은 적을 수록 좋음 의존 대상이 많은 경우 기능이 많은 경우 한 클래스에서 많은 기능을 제공 각 기능마다 의존하는 대상이 다를 수 있음 한...

4.기능과 책임분리

기능 분해 기능은 하위 기능으로 분해 기능을 누가 제공할 것인가? 기능은 곧 책임 분리한 각 기능을 알맞게 분배 큰 클래스, 큰 메서드 클래스나 메서드가 커지면 절차지향의 문제발생 큰 클래스 → 많은 필드를 많은 메서드가 공유 서로 다른 코드가 공유를 계속하면 변...

Java Lambda 외부 변수 사용시 문제

TransactionTemplate.executeWithoutResult(() -> {....}) 람다를 사용 중 메소드 내부 람다 외부 변수의 값을 변경하려는 도중 컴파일 오류가 발생했고 Variable used in lambda expression should be final or effectively final intellij가 Am...

2.다형성과 추상화

해당 글은 최범균님 - 인프런 | 객체지향 프로그래밍 입문 강의를 바탕으로 작성하였습니다. 너무 좋은 강의이니 추천드립니다. 다형성 Polymorphism 여러(poly) 모습(morph)을 갖는 것 객체 지향에서는 한 객체가 여러 타입을 갖는 것 여러 타입의 기능을 제공 타입 상속으로 다형성 구현 e.g. public...

1.객체 & 캡슐화

해당 글은 최범균님 - 인프런 | 객체지향 프로그래밍 입문 강의를 바탕으로 작성하였습니다. 너무 좋은 강의이니 추천드립니다. 객체 절차지향과 비용 복잡해져가는 코드 절차 지향으로 개발을 하게된다면 시간이 갈수록 복잡해지고 수정이 어려워지게 되며, 비슷한 코드가 늘어나고 복사를 시작하게 된다. 객체지향 객체 지향에서는 객체의 데이터는 ...

재고시스템으로 알아보는 동시성 이슈 해결방법

모든 코드는 Github에 공개되어 있으며 각 해결 단계를 커밋으로 분리해두었으니 확인해주세요. 상품이 판매될 때마다 재고를 하나씩 줄여주는 기능을 만들어본다. 이 때 발생할 수 있는 동시성 문제를 하나씩 해결해보자. 문제발생 케이스 하나의 상품이 100개의 재고를 가지고 있을 때 단순하게 생각하면 판매될 때 재고를 -1 한 후 저장해주면 ...

Why Kafka is fast?

Why Kafka is fast? 유튜브를 보던 중 추천 영상으로 떠서 보게되어 간단하게 정리해봤습니다. 카프카가 빠르다는 의미는 무엇일까? 낮은 레이턴시? 많은 데이터 전송 처리? 카프카는 높은 데이터 전송 처리를 위해 최적화 되었습니다. 카프카는 많은 수의 레코드(데이터)를 짧은 시간에 처리하도록 디자인되었습니다. 직경이 큰 파이프에 액...

My First-Post

Hello Github Blog Welcome to My Blog.