본문 바로가기

IT49

[Java] Java Iterator Pattern Iterator Pattern반복자(Iterator) 패턴은 일련의 데이터 집합에 대하여 순차적인 접근(순회)을 지원하는 패턴이다.데이터 집합이란 객체들을 그룹으로 묶어 자료의 구조를 취하는 컬렉션을 말한다. 대표적인 컬렉션으로 리스트나 트리, 그래프, 테이블.. 등이 있다.  보통 배열이나 리스트 같은 경우 순서가 연속적인 데이터 집합이기 때문에 간단한 for문을 통해 순회할 수 있다. 그러나 해시, 트리와 같은 컬렉션은 데이터 저장 순서가 정해지지 않고 적재되기 때문에, 각 요소들을 어떤 기준으로 접근해야 할지 애매해진다.예를 들어 아래와 같이 트리 구조가 있다면 어떤 상황에선 깊이(세로)를 우선으로 순회해야 할 수도 있고, 너비(가로)를 우선으로 순회할 수도 있기 때문이다.  이처럼 복잡하게 얽혀있.. 2024. 9. 15.
[Java] Java Adapter Pattern Adapter Pattern어댑터 패턴(Adaptor Pattern)이란 이름 그대로 클래스를 어댑터로써 사용되는 구조 패턴이다.즉, 서로 호환이 되지 않은 단자를 어댑터로 호환시켜 작동시키게끔 하는 것이 어댑터의 역할이다.이를 객체 지향 프로그래밍에 접목해 보면, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들을 함께 작동해 주도록 변환 역할을 해주는 행동 패턴이라고 보면 된다.  예를 들어 기존에 있는 시스템에 새로운 써드파티 라이브러리를 추가하고 싶거나, Legacy 인터페이스를 새로운 인터페이스로 교체하는 경우에 어댑터 패턴을 사용하면 코드의 재사용성을 높일 수 있다. 즉, 어댑터란 이미 구축되어 있는 것을 새로운 어떤 것에 사용할 때양 쪽 간의 호환성을 유지해 주기 위해 사용하는 .. 2024. 9. 15.
[Java] Java Singleton Pattern Singleton Pattern싱글톤 패턴(Singleton Pattern)은 객체 지향 프로그래밍에서,특정 클래스가 단 하나만의 인스턴스를 생성하여 사용하기 위한 패턴이다. 생성자를 여러 번 호출하더라도 인스턴스가 하나만 존재하도록 보장하여 애플리케이션에서 동일한 객체 인스턴스에 접근할 수 있도록 한다.싱글톤 패턴을 사용하는 이유에 대해 살펴보면커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 프로그램이 예상치 못한 결과를 낳을 수 있다. 따라서 객체를 필요할 때마다 생성하는 것이 아닌 단 한 번만 생성하여 전역에서 이를 공유하고 사용할 수 있게 하기 위해 싱글톤 패턴을 사용한다. Singleton Pattern 구조싱글톤 패턴.. 2024. 9. 14.
[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.

loading