09 Sep 2023 DesignPattern
프로토타입 (Prototype)
원영이 되는(prototypical) 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다.
활용 방안
프로토타입 패턴은 생성, 복합, 표현 방법에 독립적인 제품을 만들고자 할 때 쓴다.
- 인스턴스화할 클래스를 런타임에 지정할 때
- 제품 클래스 계통과 병렬적으로 만드는 팩토리...
09 Sep 2023 DesignPattern
싱글톤 (Singleton)
오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공합니다.
활용 방안
싱글톤은 다음과 같은 상황에 사용할 수 있다.
- 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점(accesspoint)으로 모든 사용자가 접근할 수 있도록 해야 할 때
- 유일한 인스턴스가...
19 Aug 2023 EffectiveJava
이번 장 전반에서 이야기 했듯, Serializable을 구현하기로 결정한 순간 언어의 정상 메커니즘인 생성자 이외의 방법으로 인스턴스를 생성할 수 있게 된다.
이는 버그와 보안 문제가 일어날 가능성이 커진다는 뜻이다. 하지만 이 위험을 직렬화 프록시 패턴(serialization proxy pattern)을 이용하면 크게 줄 일 수 있다.
직렬화 프록시...
19 Aug 2023 EffectiveJava
인스턴스 수를 통제하는 경우 대표적인 예시로 싱글톤 패턴을 들 수 있다.
public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis()...
19 Aug 2023 EffectiveJava
Item50에서는 불변인 날짜 범위 클래스를 만드는데 가변인 Date 필드를 이용했다.
방어적 복사를 사용하는 불변 클래스
public final class Period implements Serializable { private static final long serialVersionUID <span...