STUDY
-
Abstract Factory Pattern(추상 팩토리 패턴)STUDY/디자인패턴 2024. 11. 12. 21:49
추상 팩토리 패턴이란?관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있도록 하는 생성패턴 문제1. 관련 제품들로 형성된 패밀리(제품군), 예 : Chair(의자) + Sofa(소파) + CoffeeTable(커피테이블).2. 해당 제품군의 여러 가지 변형. 예를 들어 Chair(의자) + Sofa(소파) + CoffeeTable(커피테이블) 같은 제품들은 Modern(현대식), Victorian(빅토리안), ArtDeco(아르데코 양식) 와 같은 변형으로 제공 위와 같은 클래스들로 구성되는 가구 판매 프로그램을 만드는 경우 문제1. 새로운 개별 가구 객체를 생성했을 때, 이 객체들이 기존의 같은 패밀리 내에 있는 다른 가구 객체들과 일치하는 변경(스타일)을 가지도록 해야..
-
Factory Method Pattern(팩토리 메서드 패턴)STUDY/디자인패턴 2024. 10. 29. 19:48
팩토리 메서드 패턴이란?객체 생성을 공장 클래스로 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴이다. 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 도맡아 생성하는 공장 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임지는 패턴이다. 즉, 부모 공장 클래스는 제품 인터페이스에만 의존하고 실제로 어떤 제품 구현 클래스를 생성할 지는 서브 공장 클래스에서 결정한다. 즉, 인스턴스 생성을 서브 공장 클래스에게 위임하는 것이다. 구조 Product : 팩토리 메서드로 생성될 객체의 공통 인터페이스ConcreteProduct : 인터페이스를 구현한 클래스Creator : 추상화 팩토리 메서드를 갖는 클래스Conc..
-
[자바 코딩 인터뷰 완벽 가이드] Chapter 6. 객체지향 프로그래밍 Part1STUDY/JAVA 2024. 8. 7. 17:24
6.1 객체지향 프로그래밍의 개념 이해객체(object)클래스(class)추상화(abstraction)캡슐화(encapsulation)상속(ingeritance)다형성(polymophism)연관(association)집약(aggregation)구성(composition) 6.1.1 객체란 무엇인가?객체는 객체지향 프로그래밍의 핵심 개념 중 하나이다.객체는 실세계의 개체이다.객체는 상태(필드)와 동작(메서드)를 가진다.객체는 클래스의 인스턴스를 나타낸다.객체는 메모리에서 공간을 차지한다.객체는 다른 객체와 소통할 수 있다.객체는 각기 다른 접근 제어자(access modifier) 및 가시성 범위를 가질 수 있다.객체는 가변 또는 불변 속성을 가진다.객체는 가비지 컬렉터(garbage colletor)를 ..
-
아이템3. private 생성자나 열거 타입으로 싱글턴임을 보증하라STUDY/이펙티브 자바 2023. 11. 17. 13:59
싱글턴(singleton) 인스턴스를 오직 하나만 생성할 수 있는 클래스 무상태(stateless) 객체 설계상 유일해야 하는 시스템 컴포넌트 싱글턴을 생성하는 방식 1. public static final 필드 방식 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { // private 생성자는 Elvis.INSTANCE 를 초기화할 때 딱 한 번 호출된다. } public void leaveTheBuilding() { } } private 생성자는 public static final 필드를 초기화할 때 딱 한 번만 호출된다. public이나 protected 생성자가 없으므로 클래스가 초기화될 ..
-
아이템2. 생성자에 매개변수가 많다면 빌더를 고려하라.STUDY/이펙티브 자바 2023. 11. 17. 13:58
선택적 매개변수가 많은 클래스 생성 방식 점층적 생성자 패턴(telescoping constructor pattern) 자바빈즈 패턴(JavaBeans pattern) 빌더 패턴(Builder pattern) 1. 점층적 생성자 패턴 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개까지 받는 생성자, ... 형태로 선택 매개변수를 전부 다 받는 생성자까지 늘려가는 방식 점층적 생성자 패턴을 사용해서 클래스의 인스턴스를 만들려면 원하는 매개변수를 모두 포함한 생성자 중 가장 짧은 것을 골라 호출하면 되는데, 설정하길 원치 않는 매개변수까지 포함되기 쉽다. 하지만 매개변수가 많아지는 경우 클라이언트 코드를 작성하거나 읽기 어려워 진다. 코드를 읽을 때 각..
-
쿠버네티스/도커 - Helm(헬름)STUDY/Docker 2023. 6. 12. 00:07
Helm(헬름)이란? 쿠버네티스에서 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저이다. 패키지 매니저는 외부에 있는 저장소에서 패키지 정보를 받아와 패키지를 안정적으로 관리하는 도구로, 설치에 필요한 의존성 파일들을 관리하고 간편하게 설치할 수 있도록 도와주는 것이다. 패키지 매니저의 기능 패키지 검색 : 설정한 저장소에서 패키지를 검색하는 기능을 제공한다. 패키지 관리 : 저장소에서 패키지 정보를 확인하고, 사용자 시스템에 패키지 설치, 삭제, 업그레이드, 되돌리기 등을 할 수 있다. 패키지 의존성 관리 : 패키지를 설치할 때 의존하는 소프트웨어를 같이 설치하고, 삭제할 때 같이 삭제할 수 있다. 패키지 보안 관리 : 디지털 인증서와 패키지에 고유하게 발행되는 체크섬..
-
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 Part 3.4STUDY/Docker 2023. 6. 8. 00:13
1. 데몬셋(DaemonSet) 데몬셋은 클러스터 전체 노드에 특정 파드를 실행할 때 사용하는 컨트롤러로, 디플로이먼트의 replicas가 노드 수만큼 정해져 있는 형태라고 할 수 있는데, 노드 하나당 파드 한 개만을 생성한다. 이러한 데몬셋은 Calico 네트워크 플러그인과 kube-proxy를 생성할 때, 또는 MetalLB의 스피커에서도 사용될 수 있다. 이들의 공통점은 노드의 단일 접속 지점으로 노드 외부와 통신한다는 것으로, 파드가 1개 이상 필요하지 않는다. 결국 노드를 관리하는 파드라면 데몬셋으로 만드는 게 가장 효율적이다. 또한 로그 수집, 모니터링, 네트워크 에이전트, 볼륨 관리 등과 같이 모든 노드에서 실행되어야 하는 시스템 레벨의 작업에 이상적이다. 특징 노드 단위 배포 데몬셋은 클러..
-
파티셔닝STUDY/DB 2023. 6. 7. 22:21
파티셔닝이란? 큰 테이블이나 인덱스를 관리하기 쉬운 조각으로, 물리적으로 분할하는 것을 의미한다. 물리적인 데이터 분할이 있더라도, DB에 접근하는 애플리케이션의 입장에서는 이를 인식하지 못한다. Data Partitioning은 큰 테이블과 인덱스의 관리를 보다 쉽게 하기 위해 설계된다. 파티셔닝 사용의 장점 가용성(Availability) : 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상된다. 파티션은 독립적으로 관리된다. Backup and Restore을 파티션별로 작업할 수 있다. 같은 테이블에서 Unavailable한 파티션은 다른 파티션에 영향을 주지 않는다. 관리용이성(Manageability) : Database의 큰 객체들을 제거하여 관리를 쉽게 ..