반응형
- private 생성자나 열거 타입으로 싱글턴임을 보증하자2021-03-15 01:42:39싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴의 전형적인 예로는 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 클래스를 싱클턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 왜냐하면 테스트시 인스턴스를 mock 구현으로 대체할 수 없기 때문이다. 싱글턴을 만들시 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다. public static final 필드 방식의 싱글턴 ( reflection을 사용하면 private 생성자를 호출 할 수있다) 이 방식은 api에 싱글턴임이 명백히 들어나며, 간결하다 정적 팩터리 방식의 싱글턴( 항상 같은 객체의..
- 생성자에 매개변수가 많다면 빌더를 고려하라2021-03-15 00:54:38인스턴스 생성시 선택적 매개변수가 많다면 대응이 어렵다 점층적 생성자 패턴도 쓸 수는 있지만, 매개변수가 많아지면 클라이언트 코드를 작성하거나 읽기가 어려워진다. 자바 빈즈 패턴을 사용하면 객체 하나를 만들시 파라미터를 채울 여러 메서드를 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 된다. 또한, 자바 빈즈 패턴에서는 클래스를 불변으로 만들 수가 없다. 이러한 대안으로 빌더 패턴이 있다. 빌더 패턴은 필수 매개변수만으로 생성자를 호출해 빌더 객체를 얻은 후 빌더 객체가 제공하는 일종의 세터 메서드로 원하는 선택 매개변수를 설정한 후 마지막으로 buil 메서드를 호출해 객체를 얻는 방식이다. 빌더는 생성할 클래스 안에 정적 멤버 클래스로 만들어두는 게 보통이다. 빌더 패턴..
- 생성자 대신 정적 팩터리 메서드를 고려2021-03-14 19:23:16클라이언트가 클래스의 인스턴스를 얻는 기법중 정적 팩터리 메서드를 통해 인스턴스를 반환하는 정적 메서드가 있다. 정적 팩터리 메서드의 장점과 단점 장점 이름을 가질 수 있다 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못하지만 정적 펙터리 메서드는 이름을 잘 지어 객체의 특성을 묘사 할 수 있다. 하나의 시그니처로는 하나의 생성자만 만들 수 있지만 정적 팩터리 메서드는 그러한 제한을 피해 시그니처가 같은 생성자가 여러개 필요할시 정적 팩터리 메서드로 만들어 줄 수 있다. 호출 될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 불변 클래스는 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다. 반복되는..
- 백기선 - JAVA STUDY/WEEK152021-03-06 20:16:33목표 자바의 람다식에 대해 학습하세요. 학습할 것 (필수) 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식이란 ? 람다식 사용에 앞서 익명 구현 객체에 대해 알아보자 익명 구현 객체는 인터페이스나 클래스의 객체를 생성해서 사용할 때, 재사용하지 않는 경우 보통 사용한다. 특정 인터페이스를 사용하기 위해 그 인터페이스의 구현체로 클래스를 구현하는 상황에 만약 해당 클래스가 구현체로만 사용하고 클래스 자체는 재사용되지 않는다면 클래스 파일까지 생성해서 관리하는게 부담이다. 그래서 다음과 같이 별도의 클래스를 작성하지 않고 인터페이스를 바로 구현해서 사용하는 방법이 있는데 , 이를 익명 구현 객체라고 부른다. inteface AnonymousInf { void d..
반응형