본문 바로가기

분류 전체보기52

브리지 패턴 (Bridge Pattern) 장점 - 기능 인터페이스와 구현을 담당하는 추상 클래스로 독립적으로 구성이 된다. - 각 계층을 독립적으로 확장 및 변경이 가능해진다. - 객체 간 결합도를 낮출 수 있다. - 기존 설계에 새로운 요소들을 지속적으로 추가할 때 유용하다. - 기존 코드 변경 없이 기능을 확장할 수 있다. 단점 - 계층 구조에 새로운 구현체 및 기능 등을 추가하다보면 설계가 복잡해질 수 있다. 설계 구조 필기구를 추상 클래스로 선언하여 색연필, 샤프 등으로 사용하고 작성의 기능을 분리하여 선, 원, 사각형 등의 기능을 정의한다. 예제 코드 필기구 추상 클래스 public abstract class Pencil { protected Writing writing; protected Pencil(Writing writing) {.. 2023. 1. 7.
플라이 웨이트 패턴 (Flyweight Pattern) 요청마다 매번 새로운 인스턴스를 생성하는 것이 아닌 ​ 동일한 속성을 가진 인스턴스를 가능한 한 공유해서 사용함으로써 메모리를 절약하는 패턴이다. 예를 들어 무지개 색의 색연필이 있고 100명의 사용자가 각각 7원색을 모두 요청 하였다고 가정했을 때, 요청마다 새로운 인스턴스를 생성하게 되면 700개의 인스턴스가 생성되어야 한다. 그러나 플라이 웨이트 패턴을 이용하여 요청된 속성의 객체를 캐싱하여 동일한 속성을 요청하였을 경우 캐싱해둔 인스턴스를 반환함으로서 7개의 인스턴스로 처리 가능하다. 플라이 웨이트 패턴 구성 공유될 객체 객체의 인스턴스를 생성하고 캐싱하여 공유해주는 팩토리 예제 코드 색연필 클래스 /** * 길이와 무게 등은 고정값이라고 가정하고 진행한다. * 색만 변경한다. */ public .. 2023. 1. 7.
[Item 1] 생성자 대신 정적 팩터리 메서드를 고려하라 정적 팩터리 메서드란? 클래스 타입의 인스턴스 생성 방식에는 new 연산자를 통한 생성자 호출 방법 대신 정적 팩터리 메서드를 제공할 수 있다. 정적 팩터리 메서드의 장점이 있지만 단점 또한 존재한다. 장점 1. 이름을 가질수 있다. 널리 사용되는 네이밍 컨벤션이 존재하며 자유로운 이름 지정을 통해 생성자에 비해 명확하다. 생성자의 경우 클래스와 동일한 이름과 매개변수의 타입과 개수의 차이를 두어 다양하게 제공 가능하나 각 생성자에 대한 설명 없이는 파악하는데 어려움이 있다. public class Pros1 { private String name; // private 생성자 private Pros1(String name) { this.name = name; } public static Pros1 of(.. 2023. 1. 7.
Web Server와 ServletContainer의 통신 (AJP) WAS, web application container로 web server와 servlet(web) container로 구성되어있다. WAS라고 하면 대표적으로 Tomcat을 생각할 것이다. 아래는 WAS의 구조이다. 혼선이 있을 수 있어 부가적인 설명을 붙인다. WAS는 Web Container에서 jsp와 servlet을 모두 처리하며, JSP는 Servlet을 확장한 기술로서 Servlet Container, 즉 동적 데이터를 처리하는 Container이다. Web server라하면 apache, nginx가 대표적이다. 여기서 의문점이 하나 생긴다. WAS, 즉 web server를 포함하고 있는 tomcat을 이용하는데 왜 Web server를 추가적으로 이용하는 것일까? 정적인 컨텐츠와 동적.. 2022. 12. 2.