[11장] Proxy Pattern
Proxy Pattern특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공하는 패턴이다.대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다.접근 제어 방법원격 프록시를 사용하여 원격 개체로의 접근을 제어할 수 있다.가상 프록시를 써서 생성하기 힘든 자원으로의 접근을 제어할 수 있다.보호 프록시를 써서 접근 권한이 필요한 자원으로의 접근을 제어할 수 있다.모니터링 코드로컬 모니터링모니터링할 클래스public class GumballMachine { String location; public GumballMachine(String location) { this.location = location; } ..
- Books/Head First Design Pattern
- · 2024. 5. 24.
[6장] Command Pattern
Command Pattern요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능, 트랜잭션 시스템을 구현할 수 있다.리모컨 코드리모컨의 각 슬롯을 클릭했을 때, 명령을 통해 행동을 수행하고 각 슬롯마다 다른 명령을 수행해야 한다.Command Interface모든 커맨드 객체에서 구현해야 하는 인터페이스이다.execute() 메서드를 생성한다.public interface Command { public void execute();}Command Concrete행동을 수행할 구상 클래스이다.리시버 객체를 생성한다.excute 함수가 호출되면 리시버 객체에게 특정 작업을 처리하라는 지시를 전달한다.public cla..
- Books/Head First Design Pattern
- · 2024. 5. 24.
[3장] Decorator Pattern
Decorator Pattern객체에 추가요소를 동적으로 더할 수 있다. 서브 클래스를 만들 때마다 훨씬 유연하게 확장이 가능하다.OO 원칙클래스는 확장에는 열려있어야 하지만, 변경에는 닫혀있어야 한다.커피 메뉴슈퍼클래스 Beverage에 여러 개의 커피 메뉴 클래스를 상속으로 추가할 경우, 많은 수의 상속 관계가 발생하는 문제점이 있다.따라서 음료에 여러 첨가물들을 장식(데코레이트)하는 방법으로 구현한다.변하는 부분: 음료 이름, 가격Decorator은 Component를 꾸밀 수도, 아닐 수도 있다.Abstract Class추상 클래스public abstract class Beverage { // 음료 이름 String description = "Unknown Beverage"; public Stri..
- Books/Head First Design Pattern
- · 2024. 5. 24.
[2장] Observer Pattern
Observer Pattern한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로, 일대다 의존성을 정의한다.Subject에서 중요한 데이터를 관리하고, Subject의 상태가 변화하면 Observer에서 소식이 전해진다.Observer는 Subject를 구독하고 있으며 갱신 내용을 전달 받는다.OO 원칙상호작용하는 객체 사이에는 가능하면 느슨한 결합을 사용해야 한다.느슨한 결합객체 사이의 상호의존성을 최소화한다.Subject는 Observer가 특정 인터페이스를 구현한다는 사실만 안다.언제든지 Observer를 추가 가능하다.새로운 형식의 Observer를 추가할 때마다 Subject를 수정할 필요가 없다.Subject와 Observer는 서로 독립적..
- Books/Head First Design Pattern
- · 2024. 5. 24.