헤드퍼스트 디자인패턴 4

[헤드퍼스트 디자인패턴] 템플릿메서드 패턴

템플릿메서드 패턴을 알아보자.  템플릿 메서드 패턴템플릿 메서드 패턴알고리즘의 골격을 정의한다. 템플릿 메서드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정단계를 서브클래스에서 재정의할 수 있다.     템플릿 매서드 패턴 템플릿 메서드 패턴(Template Method Pattern)은 소프트웨어 디자인 패턴 중 하나로, 객체지향 프로그래밍에서 코드의 재사용성을 높이고, 일관성 있는 알고리즘 구현을 위해 고안되었다. 이 패턴의 핵심 아이디어는 알고리즘의 골격(뼈대)을 정의하고, 세부적인 처리는 서브클래스에서 담당하도록 하는 것이다.  템플릿 메서드 패턴을 통해 코드 중복제거하고, 알고리즘 일관성 유지할 수 있으며, 변화하는 부분과..

디자인패턴 2024.08.20

[헤드퍼스트 디자인패턴] 어댑터 패턴 퍼사드 패턴

어댑터 패턴과 퍼사드 패턴을 알아보자. 어댑터 패턴, 퍼사드 패턴어댑터 패턴특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와준다. 퍼사드 패턴서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어 준다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있다. 어댑터 패턴소프트웨어 시스템에 새로운 클래스 라이브러리를 사용하는 상황을 가정해 보자. 라이브러리가 사용하는 인터페이스가 기존에 사용하는 인터페이스와 다른 경우에 어떻게 해야 할까? 기존 코드를 바꾸거나 라이브러리 클래스를 변경하는 작업에 많은 노력이 필요하다. 이를 위해 라이브러리가 사용하는 인터페이스를 기존에 사용하..

카테고리 없음 2024.08.19

[헤드퍼스트 디자인패턴] 커맨드 패턴

커맨드 패턴을 알아보자 커맨드 패턴커맨드 패턴(Command Pattern)요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 이를 통해 요청을 저장하거나, 로그로 기록하거나, 작업 취소 기능을 사용할 수 있다. 즉 요청하는 객체와 요청을 수행하는 객체를 분리하고 싶다면 커맨드 페턴을 사용하면 된다. 커맨드 패턴 정의 및 클래스 다이어그램커맨드 패턴을 사용하면 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 행동과 리시버(요청을 수행하는 객체)를 한 객체에 넣고 execute() 메서드 하나만 외부에 공개하는 방법을 사용한다.  클래스 그램은 다음과 같다.Client : 클라이언트는 ConcreteCommand를 생성하고 Re..

디자인패턴 2024.08.17

[헤드퍼스트 디자인패턴] 옵저버 패턴

옵저버 패턴디자인 원칙애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다.구현보다는 인터페이스에 맞춰서 프로그래밍한다.상속보다는 구성을 활용한다.상호작용하는 객체 사이에서는 가능하면 느슨한 결합을 사용해야 한다. 옵저버 패턴(Observer Pattern)은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 요구사항 및 문제점습도, 온도, 기압을 측정하는 측정기가 있다고 가정해 보자. WeatherData라는 객체는 측정기에서 데이터를 취득 후 화면에 표시하는 역할을 담당한다. 측정기에서 습도, 온도, 기압이 변하면 WeatherData 객체로 데이터가 전달되고, 자동으로 디스플..

디자인패턴 2024.07.30