Comdolidol-i

퍼사드 패턴(Facade Pattern)퍼사드(Facade)는 건물의 정면을 의미해요. 건물 내부의 복잡함을 숨기고 건물의 정면만을 나타나게 합니다. 유저들은 건물의 정면에 있는 출입구를 통해 내부를 이용하게 됩니다. 즉, 건물의 정면이 마치 인터페이스가 되는 것이죠.🤔 시스템의 복잡한 부분을 감추고 사용자에게 단순한 인터페이스를 제공하는 개념이에요. 건물의 정면이 마치 출입구가 되어 건물 내부로 들어가는 것처럼, 사용자가 시스템의 내부 동작을 몰라도 간단한 인터페이스를 통해 시스템을 사용할 수 있게 해 줍니다. 온라인 쇼핑몰을 예를 들어 다음 퍼사드 패턴에 대해서 설명해 볼게요 😊 퍼사드 패턴 적용 예시(Facade Pattern Example)사용자는 제품을 검색하고 구매할 수 있지만, 그 내부에서는..
여러 방식으로 기능이 작동되는 메서드에서, 또 다른 기능을 추가해야 할 경우 어떻게 해야 할까요? 🤔 코드 형태에 따라 구현 방식이 천지 차이지만, if-else로 분기를 태워서 한 메서드에서 서로 다른 기능을 제공하는 경우가 많이 존재할 겁니다. 간단한 예시로 연산 종류에 따른 다른 동작을 수행시키는 계산기 코드를 다음과 같이 작성해 보았어요. public static int calculate(String operation, int operand1, int operand2) { int result; if (operation.equals("add")) { result = operand1 + operand2; } else if (operation.equals("subtract")) { result = op..
B-treePostgreSQL에서 기본적으로 사용되는 인덱스 구조는 B-tree로 되어 있습니다. B-tree는 데이터베이스에서 빠른 검색 및 정렬된 데이터 액세스를 위해 설계된 효율적인 인덱스 구조입니다. B-tree의 인덱스 행은 페이지로 구성됩니다. 잎 페이지에서는 이러한 행에 데이터를 인덱싱할 키와 테이블 행(TID)에 대한 참조가 포함되며, 내부 페이지에서는 각 행이 인덱스의 자식 페이지를 참조하고 이 페이지의 최소 값을 포함합니다. B-tree의 몇 가지 중요한 특성이 다음과 같이 있습니다. B-tree는 균현이 잡혀 있으며, 각 잎 페이지는 루트로부터 동일한 수의 내부 페이지로 분리됩니다. 따라서 모든 값에 대한 검색은 동일한 시간이 걸립니다.B-tree는 각 페이지(보통 8KB)는 많은(수..
인덱스 온리 스캔(Index Only Scan) 인덱스 온리 스캔(Index Only Scan)은 인덱스 스캔과 유사하지만, 테이블 데이터 대신 인덱스로부터 직접 데이터를 가져옵니다. 따라서 테이블 데이터에 대한 접근이 필요 없으므로, 더 빠른 쿼리 실행 속도를 제공합니다. 인덱스 온리 스캔을 사용한다는 것은 데이터베이스가 쿼리의 결과를 인덱스만으로 만들어내기 때문에 "인덱스만 스캔한다."라고 표현할 수 있습니다. 테이블 예제 테스트를 위해서 테이블은 다음과 같이 작성했습니다. CREATE TABLE books_test ( books_id INTEGER NOT NULL PRIMARY KEY , books_title VARCHAR , books_price INTEGER , books_link VARCHAR..
생성자 주입(Constructor Injection)은 의존성 주입의 한 종류로, 객체를 생성할 때 해당 객체가 필요로 하는 의존성을 생성자를 통해 주입하는 방식이에요. 스프링 프레임워크에서는 Autowired 어노테이션을 사용합니다. 반면에 필드 주입(Field Injection)은 의존성을 클래스의 필드에 직접 주입하는 방식이며, Autowired 어노테이션을 필드에 적용합니다. @Service public clas ExampleService { private final ExampleRepository exampleRepository; @Autowired public ExampleService(ExampleRepository exampleRepository) { this.exampleRepositor..
데코레이터 패턴(Decorator Pattern)은 객체의 기능을 확장하거나 수정할 때 사용되는 디자인 패턴이에요. 유연하게 확장을 할 수 있기에, 정적 또는 동적으로 객체에 새로운 기능을 부여할 수 있어요. 일상생활에서는 선물 포장이 떠오르는데, 선물을 준비할 때 종이나 리본, 스티커 등을 사용해서 선물을 포장합니다. 이렇게 포장을 추가하는 것은 기존 선물을 변경하지 않고도 새로운 요소를 덧붙여 선물을 만드는 것과 유사해요. 데코레이터 패턴도 이와 비슷하게 기존 객체를 그대로 유지하면서 새로운 기능을 추가하거나 변경함으로써 객체를 더욱 강화시킵니다. 이렇게 하면 기본 객체는 변함없이 유지되면서도 새로운 기능을 더해주어 객체의 활용도를 높일 수 있어요. 데코레이터 패턴 구조(Decorator Patter..
A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol. 서블릿과 서블릿 컨테이너(Servlet and Servlet Container) 일반적으로 웹 서버는 정적인 페이지를 제공합니다. 동적인 페이지를 제공하기 위해서 웹 서버는 다른 곳에 도움을 요청하여 동적인 페이지를 작성해야 합니다. 동적인 페이지로 임의의 이미지만을 보여주는 페이지와 같이 사용자가 요청한 시점에 페이지를 생성해서 전달해 주는 것을 의미합니다. 여기서 웹 서버가 동적인 페이지..
스위치문과 null (switches and null) 전통적으로, switch 문과 표현식은 선택기 표현식이 null을 검증할 때, NullPointerException을 throw 합니다. 따라서 null을 테스트하기 위해 switch 바깥에서 테스트해야 했습니다. // Prior to Java 21 static void testFooBarOld(String s) { if (s == null) { System.out.println("Oops!"); return; } switch (s) { case "Foo", "Bar" -> System.out.println("Great"); default -> System.out.println("Ok"); } } java 21부터는 선택기 표현식의 값이 null일 ..
행복한쿼콰
'분류 전체보기' 카테고리의 글 목록 (2 Page)