본문 바로가기

Computer Sience66

[Effective Java] 아이템4: 인스턴스화를 막으려거든 private 생성자를 사용하라 Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객체 생성 방법에 대한 설명유틸성 클래스 단순히 정적 메소드와 정적 필드를 담은 클래스 이런 클래스는 인스턴스화를 할 필요가 없다 → 인스턴스화를 막아보자.  이런 유틸 성격을 가지는 클래스는 자바 / 스프링 쉽게 찾아볼 수 있다. java.lang.Math java.util.Arraysjava.util.Collections Collections는 특정 인터페이스의 구현하는 객체들을 생성해 주는 정적 팩토리 메소드를 모아놓았다. 사용자는 해당 구현체를 몰라도 사용할 수 있다는 관점에서 알아야 하는 개념적인 무게가 줄었다고 볼 수 있다. public final class Math { private .. 2024. 10. 26.
[Effective Java] 아이템3: private 생성자나 열거 타입으로 싱글턴임을 보증하라 Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객체 생성 방법에 대한 설명싱글톤 패턴 이펙티브 자바 아이템3 에서 나오는 대부분의 내용을 정리한 적 있었다. 이번엔 복습 차원으로 정리하지 않았던 내용에 대해서만 간단하게 정리하겠다.  해당 링크에는 지금 내용에 없는 내용들이 많다. 1. 직렬화시 Serializable 선언과 주의점 2. 멀티 스레딩에 안전한 여러 싱글톤 생성 방법3. 이른 초기화 방식과 지연 초기화 방식 4. enum  디자인 패턴: 싱글톤 패턴 정리 [Design Pattern] 싱글톤(Singleton) 패턴싱글톤 (Singleton) 패턴인스턴스를 오직 한개만 제공하는 클래스 싱글톤(Singleton) 패턴은 특정 클래스의 .. 2024. 10. 25.
[Design Pattern] 컴포짓 (Composite) 패턴 컴포짓 (Composite) 패턴그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴 (Part-Whole Hierarchy)클라이언트 입장에서는 전체나 부분이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다.Component ├── Leaf └── Composite ├── Leaf └── Composite ├── Leaf └── Leaf 컴포짓 (Composite) 패턴 Before@AllArgsConstructor@Getterpublic class Item { private String name; private int price;}public class Bag { private List ite.. 2024. 10. 24.
[Design Pattern] 브릿지 (Bridge) 패턴 브릿지 (Bridge) 패턴 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴 하나의 계층 구조일 때 보다 각기 나누었을 때 독립적인 계층 구조로 발전 시킬 수 있다.즉, 서로 연관성이 있지만 변경될 가능성이 있는 개념들을 연결(Bridge)하여, 각각의 변경이 다른 쪽에 영향을 주지 않게함.브릿지 패턴의 핵심(구성) 요소  Abstraction (추상화) 추상적인 개념을 표현하는 부분 클라이언트가 사용하는/ 바라보는 부분이다.  Implementor (구현체)구체적인 기능을 구현하는 부분 보통 다른 인터페이스를 통해 구현된다.  Bridge: Abstraction과 Implementor를 연결하는 역할을 한다.  추상화 역할과 구현체 역할 모두 인터페이스로 선언하면 각각 독립적인 계층 구조로 발전이 .. 2024. 10. 23.
[Effective Java] 아이템2: 생성자에 매개변수가 많다면 빌더를 고려해라 Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객체 생성 방법에 대한 설명빌더 등장 배경 디자인 패턴 - 빌더 패턴 정리 [Design Pattern] 빌더(Builder) 패턴빌더 (Builder) 패턴동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법(복잡한) 객체를 만드는 프로세스를 독립적으로 분리할 수 있다빌더 패턴 적용 Before@Getter @Setter @ToSt20240228.tistory.com이펙티브 자바 아이템1 정적 팩터리 메소드 [Effective Java] 아이템1: 생성자 대신 정적 팩터리 메소드를 고려해라Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객.. 2024. 10. 22.
[Design Pattern] 어댑터 (Adapter) 패턴 어댑터 (Adpater) 패턴 - 구조적인 패턴어댑터?전자기기 규격이 110v 220v라는 말을 들어본 적 있을 것이다. 전자기기가 220v 용이면 110v 콘센트에서는 사용 불가능하다. 하지만 중간에 전압 변환 어댑터를 사용하면 110v 콘센트에서 나오는 전기를 220v로 바꿔서 전자기기에 사용이 가능하다.디자인 패턴 Adpater Pattern 또한 이런 성질을 가지는 구조이다. 소프트웨어 측면 Adapter? 어댑터 패턴(Adapter)은 서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 중간에서 변환 역할을 해주는 디자인 패턴이다. 어댑터 패턴을 사용하면 기존 코드를 수정하지 않고도 호환되지 않는 인터페이스를 결합할 수 있다. 어댑터 패턴의 주요 구성 요소 클라이언트(Clie.. 2024. 10. 22.