본문 바로가기

java14

[Java] Java Command Pattern Command Pattern커맨드 패턴(Command Pattern)은 객체의 행위(메서드)를 클래스로 만들어 캡슐화하는 패턴이다.어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하려면, 객체(B)를 참조하고 있어야 하는 의존성이 발생한다. 이와 같은 상황에서 커맨드 패턴을 적용하면 의존성을 제거할 수 있다. 또한 기능이 수정되거나 변경이 일어날 때 A 클래스의 코드를 수정 없이기능에 대한 클래스를 정의하면 되므로 시스템이 확장성이 있으면서 유연성을 가질 수 있다.즉 커맨드 패턴은 연산을 호출하는 객체와 수행하는 객체를 분리하는 패턴이다. 이 패턴에서 핵심은 통상적으로 execute()라는추상 메서드를 가진, Command 인터페이스를 통해 기능을 확장해 나간다. Command 객체의 서브클래스들은 실.. 2024. 9. 13.
[Java] Java Builder Pattern Builder Pattern빌더 패턴(Builder Pattern)은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴이다.즉 생성 패턴으로 인스턴스를 만드는 절차를 추상화한다.특히 빌더 패턴은 많은 Optional 한 멤버 변수(혹은 파라미터)나 지속성 없는 상태 값들에 대해 처리해야 할 때 큰 장점을 가지고 있다. 자바에서는 점층적 생성자 패턴을 제공하는데,이는 필수 매개변수와 함께 선택 매개변수를 0개, 1개, 2개 .. 받는 형태로, 우리가 다양한 매개변수를 입력받아 인스턴스를 생성하고 싶을 때사용하던 생성자를 오버로딩 하는 방식이다. 만약 클래스가 인스턴스 필드들이 너무 많아.. 2024. 9. 12.
[Spring boot] 위도 경도를 이용하는 거리 계산 알고리즘 프로젝트 개요요즘 모바일 웹이나 앱을 이용하다 보면 스마트폰의 현재 위치를 기반으로 특정 거리 안에 있는 정보를 사용자에게 제공하는 서비스들을 쉽게 접할 수 있다.이때 해당 정보를 보여주기 위해서는 현재 위치와 특정 정보가 존재하는 위치가 필요하다.두 지점 간의 거리를 계산해야 가까운 순서대로 정렬을 하거나 거리를 가지고 필터링을 할 수 있다. 프로젝트를 진행하기 위해서 공공데이터 포털이나, 다른 문화데이터 광장 같은 곳에서데이터를 많이 받아오는데, 이때 장소에 대한 데이터도 많이 존재한다.장소에 대한 데이터를 보면 해당 장소의 위도, 경도를 제공해 주는 경우가 많다.이를 이용하여 사용자의 위치로부터 데이터베이스에 존재하는 데이터의 거리를 계산하여 거리 순으로 데이터를 정렬하여 반환해 줄 수도 있다.위도.. 2024. 9. 12.
[Java] Java Factory Pattern Factory Pattern팩토리 패턴(Factory Pattern)은 객체 생성을 공장(Factory) 클래스로 캡슐화 처리하여,객체를 대신 생성하게 하는 생성 디자인 패턴이다. 즉, 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 도맡아 생성하는 공장 추상 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러 가지 제품 객체 생성을 각각 책임지는 것이다. 또한 객체 생성에 필요한 과정을 템플릿처럼 미리 구성해 놓고, 객체 생성에 관한 전처리나 후처리를 통해 생성 과정을 다양하게 처리하여 객체를 유연하게 정할 수 있는 특징도 있다. 즉 팩토리 패턴은 생성 패턴(Creational Pattern) 중 하나이다.생성 패턴은 인스턴스를 만드는 절차를 추.. 2024. 9. 11.
[Java] Java Decorator Pattern Decorator Pattern데코레이터 패턴(Decorator Pattern)은 대상 객체에 대한 기능 확장이나 변경이 필요할 때 객체의 결합을 통해 쓸 수 있는 유연한 대안 구조 패턴이다. Decorator을 해석하자면 '장식자'라는 의미를 가지고 있는데,  마치 기본 제품에 포장지나 외부 디자인을 살짝 변경해 줌으로써 새로운 기능을 부여하는 것과 같이, 객체 지향 프로그래밍에서 원본 객체에 대해서 무언가를 장식하여 더 추가적인 기능을 가지게 만드는 것이기 때문에 이 명칭이 붙었다고 보면 된다. 데코레이터 패턴을 이용하면 필요한 추가 기능의 조합을 런타임에서 동적으로 생성할 수 있다. 데코레이터 할 대상 객체를 새로운 행동들을 포함한 특수 장식자 객체에 넣어서 행동들을 해당 장식자 객체마다 연결시켜,.. 2024. 9. 9.
[Java] Java Observer Pattern Observer Pattern옵저버 패턴(Observer Pattern)은 옵저버(관찰자)들이 관찰하고 있는 대상자의 상태가 변화가 있을 때마다 대상자는 직접 목록의 각 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이다. 옵저버 패턴은 다른 디자인 패턴들과 다르게 일대다(one-to-many) 의존성을 가지는데, 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행 / 구독 모델로도 알려져 있기도 하다. 이 패턴을 이해하는 데 있어 뉴스 피드나 유튜브로 비유해 보면 쉽다. 유튜브 채널은 발행자(Subject)가 되고 구독자들은 관찰자(Observer)가 되는 구조로 보면 된다. 실제로 유튜버가 영상을 올리면 여러 명의 구독자들은 모두 영상이 올라왔다는 알림을 받는데, 이.. 2024. 9. 8.

loading