본문 바로가기

designpattern

(3)
[디자인 패턴] 프록시(Proxy) 패턴 프록시(Proxy) 패턴이란? 프록시패턴은 특정 객체를 대신하여 처리하게 함으로써 로직의 흐름을 제어하는 행동패턴이다. 사용자가 A객체의 methodA라는 메서드를 호출하려고 할 때 프록시 패턴을 사용해서 B객체의 methodB를 호출하고 추가적인 로직을 추가로 수행한 뒤 methodA를 호출하는 것이다. 이를 사용하는 이유는 대상 클래스가 민감한 정보를 가지고 있거나 원본 객체를 수정할 수 없는 상황일 때 추가적인 기능을 사용하기 위해서이다. 프록시 패턴을 사용했을 때 좋은 경우 보안 클라이언트가 작업을 수행할 수 있는 권한이 있는지 확인한 후 요청된 작업 수행 캐싱 프록시 내부에 캐시를 생성하여 데이터에 캐시가 존재하는 경우에 캐싱된 데이터를 반환하여 응답시간을 단축시킨다. 데이터 유효성 검사 프록시..
[디자인 패턴] 템플릿 메서드(Template Method) 패턴 템플릿 메서드(Template Method) 패턴이란? 템플릿 메서드 패턴은 수행하는 로직의 순서와 단계는 동일하지만 서브클래스에 그 세부 로직을 다르게 하는 디자인 패턴이다. 게임을 예시로 들면 종목은 다르지만 모든 게임은 initialize -> startPlay -> endPlay라는 순서가 동일한 play라는 행위를 수행하지만 어떤 게임(ex. Criket, Football)인지에 따라 그 세부 로직은 다르다. abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); // 템플릿 메소드 public final void play() { // 게임 초기화 initialize()..
[디자인 패턴] 팩토리 메서드(Factory Method) 패턴 팩토리 메서드(Factory Method) 패턴 이란? 팩토리 메서드 패턴은 객체 생성을 클라이언트가 new를 통해서 하는 것이 아닌 객체 생성을 전담하는 공장(Factory)을 통해 하는 것이다. 공장은 추상 클래스로 선언하고 공장에서 생성할 제품은 인터페이스로 선언해서 상속을 사용해서 (ex) UserFactory -> GoogleUserFactory, User -> GoogleUser) OCP를 위반하지 않고 기존 코드의 수정 없이 기능을 확장할 수 있다. 회원가입 기능을 위한 User와 User를 생성할 Factory인 UserFactory를 선언한다. interface User { void signup(); } abstract class UserFactory { public User newIn..