본문 바로가기

디자인패턴

(4)
템플릿 메서드 패턴 알고리즘의 뼈대를 정의하고, 일부 단계를 서브클래스에 연기하는 방법이다. 재사용성과 확장성을 중시하는 상황에서 유용하다. 템플릿 메서드 알고리즘의 골격(어떤 작업을 수행하는 데 필요한 여러 단계의 순서)을 제공한다. 메서드는 자체적으로 변경되지 않으며, 서브클래스에서 오버라이드할 수 있는 하나 이상의 추상메서드를 호출한다. 추상 메서드 서브클래스에서 구현해야 하는 메서드이다. 템플릿 메서드는 이러한 메서드들을 호출해 전체 알고리즘의 일부를 구성한다. 후크 메서드 선택적으로 오버라이드할 수 있는 메서드이다. 서브클래스에서 필요에 따라 구현할 수 있으며, 알고리즘의 특정 포인트에서 추가적인 작업을 수행할 수 있게 한다. 장점 코드 재사용성: 공통된 알고리즘의 코드를 상위 클래스에 한 번만 작성해 여러 하위 ..
프록시 패턴 프록시 프록시(Proxy)는 기본적으로 어떤 다른 객체에 대한 인터페이스 역할을 하는 객체로, 원래 객체에 접근하는 요청을 중간에서 가로채 처리하거나 전달하는 역할을 한다. 프록시 패턴은 객체 지향 디자인 패턴 중 하나로, 중간에서 다양한 처리를 수행하거나 컨트롤이 필요한 상황에서 유용하게 사용된다. 프록시를 사용하면 원본 객체의 로직을 변경하지 않고도 해당 객체의 동작을 확장하거나 수정할 수 있어 유연성을 향상시킬 수 있다. 타입 Static Proxy 컴파일 타임에 프록시 클래스가 정의된다. 원본 객체와 동일한 인터페이스를 구현하는 별도의 프록시 클래스를 작성해야 한다. Dynamic Proxy 런타임에 프록시 객체가 동적으로 생성된다. Java에서는 Proxy 클래스와 InvocationHandle..
싱글턴 패턴 싱글턴 패턴 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. public class Singleton{ private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } } 위의 방식은 멀티스레딩 환경에서 getInstance() 메서드의 동기화를 보장해주지 않는다. 따라서 두 스레드가 다른 인스턴스를 return받을 수 있다. 방법 1. synchronized 키워드 사용하기 public class ..
의존 관계 제어 의존이란? 어떤 객체가 다른 객체를 참조하는 것. 여러가지 의존 관계가 있을 수 있는데, 다음은 그의 일부를 설명한다. 참조를 통해 발생하는 의존 관계 public class ObjectA { private ObjectB objectB; } 일반화를 통한 의존 관계 public interface IUserRepository { User Find(UserId id); } public class UserRepository: IUserRepository { public User Find(UserId id) { ... } } 인터페이스와 그 구현체가 되는 구상 클래스 사이에 나타나는 의존관계이다. 코드가 갖는 의존 관계UserApplicationService는 UserRepository객체를 속성으로 갖도록 정..