일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 제네릭 타입
- 항해99
- raw 타입
- 정렬
- 람다식
- System.err
- auto.create.topics.enable
- throwable
- 제네릭 와일드 카드
- 스파르타코딩클럽
- 상속
- junit 5
- github api
- docker
- 접근지시자
- 자바할래
- yield
- 바운디드 타입
- 함수형 인터페이스
- System.in
- annotation processor
- 브릿지 메소드
- 자바스터디
- Switch Expressions
- Study Halle
- 로컬 클래스
- 합병 정렬
- System.out
- 익명 클래스
- 프리미티브 타입
- Today
- Total
목록분류 전체보기 (253)
코딩하는 털보
디자인 패턴 4. 팩토리 패턴 https://rockintuna.tistory.com/181 디자인 패턴 4. 팩토리 패턴 2/2 디자인 패턴 4. 팩토리 패턴 디자인원칙, 추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하도록 만들지 않도록 한다. (Dependency Inversion Principle) 위 원칙은 고수준 구성요소가 저수준 구 rockintuna.tistory.com 이펙티브 자바, 아이템 17. 변경 가능성을 최소화하라 https://rockintuna.tistory.com/182 이펙티브 자바, 아이템 17. 변경 가능성을 최소화하라 이펙티브 자바, 아이템 17. 변경 가능성을 최소화하라 불변 객체는 단순하다. 생성된 시점의 상태를 파괴될 때까지 그대로 간직한다. 불변 클래스..
이펙티브 자바, 아이템 17. 변경 가능성을 최소화하라 불변 객체는 단순하다. 생성된 시점의 상태를 파괴될 때까지 그대로 간직한다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉽고 오류가 생길 여지가 적어 안전하다. 클래스는 꼭 필요한 경우가 아니라면 불변이어야 한다. 불변으로 만들 수 없는 클래스라도 변경할 수 있는 부분을 최소화하자. 불변 클래스 만들기 규칙 setter를 제공하지 않는다. getter가 있다고 해서 무조건 setter를 만들지는 말자. 클래스를 확장할 수 없게 막는다. 가장 쉬운 방법은 final 클래스로 만들기. 또는 모든 생성자를 private 또는 package-private으로 만들고 정적 팩토리를 제공하기. 모든 필드를 final로 선언한다. 모든 필드를 pr..
디자인 패턴 4. 팩토리 패턴 디자인원칙, 추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하도록 만들지 않도록 한다. (Dependency Inversion Principle) 위 원칙은 고수준 구성요소가 저수준 구성요소에 의존하면 안 된다는 것이 내포되어 있다. 예를 들면 처음에 예로 나왔던 PizzaStore는 고수준 구성요소이며 여러가지 저수준 구성요소인 Pizza 클래스들에 의존하고 있다. public class PizzaStore { Pizza orderPizza(String type) { Pizza pizza; if (type.equals("cheese")) { pizza = new CheesePizza(); } else if ( type.equals("pepperoni")) { piz..
디자인 패턴 3. 데코레이터 패턴 https://rockintuna.tistory.com/177?category=886435 디자인 패턴 3. 데코레이터 패턴 디자인 패턴 3. 데코레이터 패턴 디자인원칙, 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다. (Open-Closed Principle) 기존 코드는 건드리지 않은 채로 확장을 rockintuna.tistory.com 디자인 패턴 4. 팩토리 패턴 https://rockintuna.tistory.com/178 디자인 패턴 4. 팩토리 패턴 1/2 디자인 패턴 4. 팩토리 패턴 이번 장의 예시는 PizzaStore였다. 여러 종류의 피자 중에서 한 가지 타입의 피자 객체를 생성하고 가공하여 반환하는 메서드 ord..
이펙티브 자바, 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 https://rockintuna.tistory.com/175 이펙티브 자바, 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 이펙티브 자바, 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 정보 은닉의 장점 각 컴포넌트를 병렬 rockintuna.tistory.com 이펙티브 자바, 아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 https://rockintuna.tistory.com/176?category=886433 이펙티브 자바, 아이템 16. public 클래스에서는 public 필드가 아..
디자인 패턴 4. 팩토리 패턴 이번 장의 예시는 PizzaStore였다. 여러 종류의 피자 중에서 한 가지 타입의 피자 객체를 생성하고 가공하여 반환하는 메서드 orderPizza. (재미있는건 클린 코드에서도 피자를 예로 들었던 빌더 패턴이 있었다.) String 아규먼트 type으로 피자 종류를 선택하고 인스턴스를 생성한다. public class PizzaStore { Pizza orderPizza(String type) { Pizza pizza; if (type.equals("cheese")) { pizza = new CheesePizza(); } else if ( type.equals("pepperoni")) { pizza = new PepperoniPizza(); } else if ( type..
디자인 패턴 3. 데코레이터 패턴 디자인원칙, 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다. (Open-Closed Principle) 기존 코드는 건드리지 않은 채로 확장을 통해서 새로운 행동을 간단하게 추가할 수 있도록 해야한다. 이렇게 하면 새로운 기능 추가가 매우 유연하여 급변하는 환경에 잘 적응하면서도 튼튼한 디자인을 만들 수 있다. 이 원칙은 어떻게 보면 모순되어 보일 수 있다. 하지만 직접 코드를 수정하지 않고 코드를 확장할 수 있게 해주는 기법들이 있다. 상속은 변경될 가능성이 높은 부분에는 적합하지 않다. 책에서는 스벅 음료 추상클래스를 상속받는 음료 메뉴들을 예로 들었다. public abstract class Beverage { String de..
이펙티브 자바, 아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 public 클래스의 public 필드는 API를 수정하지 않고는 (API를 사용하는 클라이언트에 피해를 줄 수 있으므로)내부 표현을 바꿀 수 없고, 불변식을 보장할 수 없으며, 외부에서 필드에 접근할 때 부수 작업을 수행할 수도 없다. 필드를 private으로 바꾸고 접근자 및 변경자 메서드를 활용하자. public class Point { private final int x; private final int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY()..
이펙티브 자바, 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 정보 은닉의 장점 각 컴포넌트를 병렬로 개발할 수 있기 때문에 개발 속도를 높인다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고 교체하는 부담도 적기 때문에 관리 비용을 낮춘다. 다른 컴포넌트에 영향을 주지 않고 최적화할 수 있기 때문에 성능 최적화에 도움을 준다. 외부에 의존하지 않고 독자적으로 동작하는 컴포넌트는 재사용성이 높다. 개별 컴포넌트 동작 검증으로 큰 시스템을 제작하는 난이도를 낮춰준다. 접근 제한자를 제대로 활용하는 것이 정보 은닉의 핵심이다. 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다. 클래스의 접근 제한자 톱레벨 ..
트리 관련 주요 용어 노드/마디/정점 (Node/Vertex) 트리를 구성하는 기본 원소 ex) A,B,C,D,E,F,G,H,I,J,K,L,M,N 가지/관계/분기/링크 (Branch/Edge/Link) 노드와 노드 간의 연결선 (드물게, 뿌리(root)와 잎(leaf) 사이의 모든 노드를 일컫기도 함) 부(하위) 트리의 갯수/간선수/차수 (Degree) 각 노드가 지닌 가지의 수 (한 노드에 연결된 자식 노드의 수) ex) A의 디그리 = 2, B의 디그리 = 3, C의 디그리 = 2 즉, 부 트리(subtree)의 갯수를 그 노드의 degree 라고 함 이진 트리 : 모든 노드의 차수가 2 이하인 트리 계수 (Order) (드물게,차수라고도 하나 올바른 용어는 아님) 자식 노드들 중 최대 개수 ex) ..