본문 바로가기

분류 전체보기

(107)
[ GOF ] 팩토리 매서드 패턴 - Factory Method Pattern with Kotlin Topic =  팩토리 매서드의 의도와 개념 학습 후 예제 작성해보면서 정리해보기 🔑 Purpose팩토리 매서드 패턴은 객체 생성 로직을 추상화하여 작성하는 것으로 객체 생성에 대한 로직 정의와, 객체가 사용되는 로직을 분리한 것으로 SRP( 단일 책임 원칙)와 OCP( 개방/폐쇄 원칙 ) 를 따를 수 있게 된다. 💡 디자인 패턴들을 분리해서 이해하지 않기 → 싱글톤과 같은 디자인 패턴은 다른 패턴들을 보완하기도 하고, 탬플릿 매서드 패턴을 상위 구조로두고 객체 생성에 초점을 맞춘 하위 구조로 팩토리 매서드 구조를 이용할 수 있다.이 전 글에서 배운 탬플릿 매서드 패턴 ( 중복 알고리즘 분리하여 재사용 )과 상당히 유사한 구조로 이루어져 있다. 팩토리 패턴은 탬플릿 매서드 패턴의 응용 버전이기 때문이.. 2024. 9. 11. 22:48
[ GOF ] 전략 패턴 - Strategy Pattern with Koltin Topic =  Strategy 패턴의 의도와 개념을 학습하고 Template Method 패턴과 Strategy 패턴 차이 정리하기 🔑 Purpose전략 패턴 - 특정 알고리즘을 캡슐화하여서 Context 내에서 유연하게 알고리즘을 변경하여 사용할 수 있도록 하는 패턴  Strategy Pattern [ 상황 1 ]사용자들이 서비스를 이용하다가 악성 행위를 했을 때, 악성 유저 점수를 추가하고, 악성 점수 상향 처리에 걸린 시간을 로그로 남기고, 악성 유저 점수가 추가된 후에는 해당 회원의 악성 점수를 로그에 남긴다. [ ❌ Strategy 패턴 미적용 예시 ]private val logger =KotlinLogging.logger { }class User { private var count .. 2024. 9. 10. 18:36
[ GOF ] 탬플릿 메서드 패턴 - Template method with Kotlin Topic =  템플릿 메서드 패턴의 의도와 Kotlin 적용 예제 학습해보기 🔑Purpose변하는 것과 변하지 않는 것을 분리반복되는 공통 로직을 템플릿이라는 변하지 않는 뼈대로 정의해두고, 변하는 부분을 별도의 서브클래스로 정의하여 분리한다. 예시로 비교해보면서 학습하는 탬플릿 메서드 패턴 개념 fun main { fun algorithmA(){ val startTime = System.currentTimeMillis() // 알고리즘 풀이 val endTime = System.currentTimeMillis() val resultTime = endtime - startTime } fun algor.. 2024. 9. 9. 23:34
[ GOF ] 어댑터 패턴 - Adapter Pattern with Kotlin Topic =  어댑터 패턴의 의도와 Kotlin 예제로 실습해보기. 🔑 PurposeAdapter라는 중간 클래스를 통해 서로 다른 인터페이스를 가진 클래스들이 함께 작동할 수 있도록 하여 새로운 시스템을 도입하더라도 기존의 인터페이스를 변경하지 않고도 새로운 기능을 추가할 수 있도록 한다.   Adapter 패턴 개념 Adapter 패턴은 120V 돼지코 콘센트에 220V 플러그를 지닌 전자기기를 사용하기 위해 어뎁터를 사용하는 것과 같이 기존 클래스를 사용하고 싶지만, 그 인터페이스가 다른 코드와 호환되지 않을 때 사용할 수 있다. 즉, Client가 사용하고 있는 Target(120V 콘센트)에 호환되지 않는 Adaptee(220V 플러그)를 Target에 만족시키기 위해 Adapter를 사용하.. 2024. 9. 9. 20:43
[ GOF ] 반복자 패턴 - Iterator Pattern with Kotlin Topic =  반복자 패턴의 의도와 Kotlin 사용 방법 알아보기.PurposeIterator 인터페이스를 추상화 함으로 Array, List, Map 등 컬렉션 모두 동일한 방식으로 순회할 수 있도록 한다.반복문의 요소를 순회하는 방법을 캡슐화 하여 사용자는 각 요소에 대해 수행할 작업만 정의하면 된다. 예시로 비교해보면서 학습하는 반복자 패턴 개념 [ 반복자 패턴을 사용하지 않는 예시 ]val myArr = arrayOf(1,2,3,4,5)val myList = arrOf(1,2,3,4,5)for (i in 0 until myArr.size ) { println(myArr[i]) 특정 배열의 인덱스를 직접 접근하여 반복하는 방식으로, 직접 상태 변수 i를 관리한다,배열 순회 방식의 구현과, .. 2024. 9. 9. 12:40
[DB] DB 관리 시스템 (DBMS) - DBMS 개요와 RDBMS, NoSQL Topic = RDBMS 개념과 noSQL 등 데이터 베이스 관리 시스템에 대해 정리해보기  DBMS ( Data Base Management System ) DBMS?데이터베이스 생성, 데이터 검색, 데이터베이스 업데이트 등의 데이터베이스 관리에 사용되는 기능(인터페이스)을 제공하는 것으로, RDBMS의 경우 SQL와 같은 쿼리 언어 등의 형태로 인터페이스를 사용할 수 있도록 지원한다. DBMS의 주요 기능은 아래 기능들에 해당하며, 각 기능에 최적화된 여러가지 DBMS를 조합하여 사용하는 것이 일반적이다.데이터 구성 및 관리데이터 보안데이터 무결성 및 일관성동시 데이터 액세스 ( 락, 트랜잭션 )확장성 및 유연성비용 효율성 DBMS가 없다면? - 데이터의 독립성파일 시스템 데이터의 경우에,  데이터를.. 2024. 8. 27. 04:13
[Kotlin Spring] Jdbc RowMapper - BeanPropertyRowMapper, DataClassRowMapper 작동원리 Topic =  Kotlin에서 RowMapper는 어떤 객체를 사용해야 할까?BeanPropertyRowMapper vs DataClassRowMapper  Why  RowMapper는 단순하게 쿼리 결과를 담아와서 인스턴스로 지정한 클래스에 적용시켜주는 것. 이라고 학습하고 넘어가려고 했는데 BeanPropertyRowMapper 를 사용하여 쿼리 결과를 객체로 매핑하던 중 아래와 같이 문제가 발생했다.🚨 No argument provided for a required parameter: parameter #0 itemNameSQL 쿼리의 결과를 클래스의 생성자에 매핑하는 과정에서 발생한 문제.상황- ResultSet으로 ResultSet.getString("item_name") 와 같이 수동으로 .. 2024. 8. 21. 08:08
[Kotlin Spring] JDBC 개념과 구성 정리해보기 Topic =  JCDB의 구성요소 및 주 기능 이해하기 JDBC - Java Database Connectivity JDBC란?Java 애플리케이션이 데이터베이스와 연결하고, SQL 쿼리를 실행할 수 있도록 해주는 API 이다. 이를 위해 필요한 클래스와 인터페이스 들이 여러가지 있는데, 대표적으로 java.sql 패키지가 있다. JDBC 주요 구성요소 Connection데이터베이스와의 연결을 나타내는 객체를 추상화한 인터페이스로 데이터베이스와의 세션을 관리하고 SQL 쿼리를 실행하기 위한 Statement 객체를 생성하는 데 사용된다.✅ 자바 애플리케이션에서 Connection 객체를 사용하기 위해서는 java.sql 패키지의 Connection 을 사용하게 된다. 해당 Connection 은, 다양.. 2024. 8. 16. 04:34