본문 바로가기

프로그래밍/디자인패턴6

자바 커맨드(Command) 패턴 설명 커맨드 패턴은 요청을 객체의 형태로 캡슐화하여 사용하는 패턴입니다. 객체의 행동을 변화시키는 요구나 명령을 클래스로 표현하는 패턴입니다. 왜 사용해야 하는지 다양한 요청을 안전하게 처리할 수 있다. 각각의 커맨드들은 특정 객체에 의존하지 않도록 만들어지므로 재활용성이 매우 높습니다. 예시 저희는 이제 리모컨을 만들어 보겠습니다. 리모컨에는 4개의 버튼과 4가지 기능이 있는데요. 우선 커맨드를 인터페이스로 정의해보겠습니다. public interface ButtonCommand { public void run(); } 그다음 4가지 버튼의 기능을 만들어 보겠습니다. public class PowerOnButton implements ButtonCommand { @Override public void .. 2022. 12. 12.
자바 데커레이터(Decorator) 패턴 설명 Decorator 뜻은 장식으로 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴입니다. 객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴입니다. 왜 사용해야 하는지 상속을 통한 기능의 확장은 각 기능별로 클래스를 추가해야하는 단점이 있습니다. 각 추가 기능별로 개별적인 클래스를 설계하고 기능을 조합할 때 각 클래스의 객체 조합을 이용하면 됩니다. 그리하여 이 설계는 추가 기능의 수가 많을수록 효과가 좋습니다. 예시 까페 레시피를 프린트하는 프로그램을 만들어 보겠습니다. 먼저 커피 재료를 리턴하는 메서드를 지닌 인터페이스를 만듭니다. public interface Coffee { String recipe(); } 그다음 커피데코레이터 추상클래스를 만듭니다.(커피.. 2022. 11. 15.
자바 전략 패턴 설명 및 왜 사용해야 하는지 알고리즘을 클래스화해서 객체의 행동을 쉽게 변경할 수 있는 패턴입니다. 실시간으로 객체의 행동을 변경해야 할 필요가 있을때 사용합니다. 전략의 수정과 추가에 따른 클라이언트의 의존성을 제거하여 전략을 쉽게 변경 할 수 있습니다. 실시간으로 전략을 선택하여 객체의 행동을 변경 할 수 있습니다. 예를 들어서 포토샵에서 작업한 이미지를 여러 포맷(jpg,gif,png)로 저장할때 게임 캐릭터의 공격무기를 다양하게 선택 할때 입니다. 예시 저희는 이제 포토샵 개발자가 되었습니다! 포토샵에서 이미지를 저장할때 pdf, jpg, 클립보드 등 다양한 포맷으로 저장을 하게 하는데요. 저장 방식을 전략패턴으로 한번 코딩해보겠습니다. 우선 추상클래스로 Image가 있습니다. public abs.. 2022. 11. 3.
자바 프록시 패턴 설명 및 왜 사용해야하는지 Proxy를 번역하면 대리자 입니다. 즉 프록시 패턴이란 어떤 객체의 접근을 제어하는 대리 객체를 제공하여 다양한 선행처리(접근제한, 캐시 등)을 이용하는 패턴입니다. 대리(Proxy)객체는 부모객체를 상속받고 위임도 받아서 사용합니다. 예시 ride()메서드를 가진 자전거를 간단하게 객체 생성하고 ride를 실행해보는 작업을 진행해보겠습니다. 먼저 타다 라는 메서드를 지닌 자전거 인터페이스가 있습니다. public interface Bicycle { void ride(); } 자전거는 구현체를 지니고 있는데요. 다이아몬드백이 자전거의 구현체입니다. public class DiamondbackBicycle implements Bicycle { @Override public vo.. 2022. 11. 1.
자바 빌더 패턴 빌더 패턴 이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴입니다. 생성패턴 중 하나로 빌더 패턴의 장점은 생성패턴 객체의 인스턴스생성과정을 추상화, 객체생성과 참조과정을 캡슐화하여 → 객체 생성/변경이 프로그램 구조에 영향을 받지 않도록함 → 결국 프로그램 유연해집니다. 스프링에서 사용 예시 대표적인 예시로 spring-security가 있습니다. docs의 example을 보면 HttpSecurity, UserDeatails객체를 build하여 만들고 사용합니다. HttpSecurity (spring-security-docs 5.7.4 API) HttpSecurity (spring-security-docs 5.7.4 API) Al.. 2022. 10. 30.
자바 팩토리 메서드 패턴 설명 팩토리 메소드 패턴은 객체를 생성할 때 어떤 클래스의 인스턴스를 만들지 서브 클래스에서 결정하게 합니다. 즉, 인스턴스 생성을 서브 클래스에게 위임합니다. 객체를 생성하는 공장 클래스를 만들어서 생성의 역할을 가지는 클래스를 만드는 것이 핵심! 또한 자식 팩토리 클래스에 구현을 하여 결정합니다. 왜 사용해야 하는지 팩토리 패턴을 사용하는 이유는 객체를 생성하는 역할을 분리하겠다는 취지가 담겨있습니다. 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는데 유용합니다. 예시 먼저 추상객체로 피자가 있습니다. 이 피자의 종류로 구현객체인 씨푸드피자, 베이컨피자, 치즈피자가 있습니다. import java.math.BigInteger; public abstract class.. 2022. 10. 25.
반응형