소소한 개발일기
내일 더 나은 개발자가 되기 위해, 오늘을 기록합니다.
-
Gof 디자인패턴_플라이웨이트(FLYWEIGHT) 패턴
플라이웨이트(FlyWeight) 패턴 의도 공유(sharing)를 통해 많은 수로 쪼개진(fine-grained) 객체들을 효과적으로 지원한다. 활용성 플라이웨이트 패턴은 언제 사용하는가에 따라서 그 효과가 달라지며, 다음과 같은 경우에 사용할 수 있다. 응용프로그램이 대량의 객체를 사용해야 할 때 객체의 수가 너무 많아져 저장 비용이 너무 높아질 때 구조 Flyweight Flyweight가 받아들일 수 있고, 부가적 상태에서 동작해야...
-
Gof 디자인패턴_파사드(Facade) 패턴
파사드(Facade) 패턴 의도 한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공하는 패턴으로, 서브시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 정의한다. 동기 시스템을 서브시스템으로 구조화하면 복잡성을 줄이는 데에 큰 도움이 된다. 공통적인 설계 목표는 서브시스템 사이의 의사소통 및 종속성을 최소화하려는 것이다. 이런 목표를 달성하도록 도와주는 패턴이 Facade(파사드)이다. 주어진 서브시스템의 일반적인...
-
Gof 디자인패턴_데코레이터(Decorator) 패턴
데코레이터(Decorator) 패턴 의도 객체에 동적으로 새로운 책임을 추가할 수 있게 해준다. 기능을 추가하려면, 서브 클래스를 생성하는 것보다 융통성 있는 방법을 제공한다. 동기 가끔 전체 클래스에 새로운 기능을 추가할 필요는 없지만, 개별적인 객체에 새로운 책임을 추가할 필요가 있다. 이렇게 새로운 서비스의 추가가 필요할 때 이를 해결하는 일반적인 방법은 상속이지만, 동적으로 확장이...
-
이펙티브 자바 3/E_일반적인 프로그래밍 원칙
일반적인 프로그래밍 원칙 57. 지역변수의 범위를 최소화하라. 핵심 정리 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 가장 처음 쓰일 때 선언하기다. 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어진다. 거의 모든 지역변수는 선언과 동시에 초기해야 한다. 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. 메서드를 작게 유지하고...
-
이펙티브 자바 3/E_메서드
8장. 람다와 스트림 49. 매개변수가 유효한지 검사하라. 핵심 정리 메서드나 생성자를 작성할 때면, 그 매개변수들에 어떤 제약이 있을지 생각해야한다. 그 노력은 유효성 검사가 실제 오류를 처음 걸러낼 때 충분히 보상받을 것이다. 50. 적시에 방어적 복사본을 만들라. 핵심 정리 클래스가 클라이언트로부터 혹은 클라이언트로 반환하는 구성요소가 가변이라면 그 요소는 반드시 방어적으로 복사해야...