![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Cb5vD/btsGJl9s4YR/nJwK9jfUK6o8zJhJWMZx0k/img.png)
컴포지트 패턴이란?복합 객체(Composite) 와 단일 객체(Leaf)를 동일한 컴포넌트로 취급하여, 클라이언트에게 이 둘을 구분하지 않고 동일한 인터페이스를 사용하도록 하는 구조 패턴입니다. 컴포지트 패턴은 전체-부분의 관계를 갖는 객체들 사이의 관계를 트리 계층 구조로 정의해야 할때 유용합니다.컴포지트 패턴 사용 방법Component : Leaf와 Compsite 를 묶는 공통적인 상위 인터페이스Composite : 복합 객체로서, Leaf 역할이나 Composite 역할을 넣어 관리하는 역할을 한다. Component 구현체들을 내부 리스트로 관리한다add 와 remove 메소드는 내부 리스트에 단일 / 복합 객체를 저장Component 인터페이스의 구현 메서드인 operation은 복합 객체에..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bDOTTo/btsGIMl1NhG/59hu6OQiDRRXhBrNlR3GOk/img.png)
퍼싸드 패턴이란?내부의 서브 시스템을 감싸고, 클라이언트에게 인터페이스를 제공하여 쉽게 접근할 수 있도록 하는 패턴입니다. high-level 인터페이스를 정의하고 제공해 시스템을 감춰 클라이언트는 내부에 어떤 기능이 존재하는지 복잡한 것에 대해 잘 모르더라도, 해당 기능에 접근하여 사용할 수 있습니다.퍼사드 패턴은 전략 패턴이나 팩토리 패턴과 같은 여타 다른 디자인 패턴과는 다르게 클래스 구조가 정형화 되지 않은 패턴이다. 반드시 클래스 위치는 어떻고 어떤 형식으로 위임을 해야되고 이런것이 없다. 그냥 퍼사드 클래스를 만들어 적절히 기능 집약화만 해주면 그게 디자인 패턴이 되는 것이다. (패턴이라기 보단 논리에 가깝다)퍼싸드 패턴의 사용 방법서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper..
추상 클래스와 인터페이스는 모두 인스턴스화 (new)를 할 수 없다는 공통점이 있다.추상 클래스와 인터페이스의 차이점은 ? 추상 클래스인터페이스추상이 아닌 메소드가질 수 있음모든 메서드가 추상 메서드인스턴스 변수 선언가능불가능, static final 은 가능생성자정의 가능정의 불가가시성 차이점구분인터페이스 멤버 (메서드)추상 클래스 멤버 (메서드, 변수)인터페이스 자체추상클래스 자체Public기본적으로 적용명시적으로 지정 가능명시적으로 지정 가능명시적으로 지정 가능Protected불가능지정 가능불가능지정 가능Private자바 9+에서 내부 구현을 위해 지정 가능지정 가능불가능지정 가능Package-private패키지 내에 선언 시 자동 적용 (명시적으로 public이 아닐 경우)패키지 내에 선언 시 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bY0jPL/btsGle4tErL/GtYfY3Sjq4ZZnTOGaTAK81/tfile.avif)
어댑터 패턴이란?어댑터 패턴은 서로 호환되지 않는 인터페이스를 가진 객체들이 협력할 수 있도록 하는 패턴으로, 래퍼로도 불립니다. 기존에 사용했던 시스템(레거시 시스템)을 원하는 인터페이스로 사용가능하게 합니다. 어댑터 패턴의 사용 방법클래스 어댑터 (상속)Adaptee : 기존 레거시 시스템Target: 어댑터가 구현하는 인터페이스Adapter: Client와 Adaptee중간에서 호환성이 없는 둘을 연결시켜주는 역할 담당클래스 어댑터 방식에서는 상속을 이용해 구성Adaptee는 extends, Target은 implements해서 구현Client: 기존 시스템을 어댑터를 통해 이용하려는 쪽. Client interface를 통해 Service를 이용// Target 인터페이스 - 새로운 인터페이스p..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/XvKNj/btsHTirwwBJ/QhUM2DXN9lD7no5aVQo2R1/img.jpg)
UML이란?UML(Unified Modeling Language)은 프로그램의 구조와 행위를 시각적으로 표현하기 위한 표준화된 모델링 언어입니다. 복잡한 소프트웨어 시스템의 설계를 다이어그램으로 표현함으로써, 개발자와 이해관계자 간의 의사소통을 용이하게 합니다. UML 사용 이유모델 검증: UML을 사용하면 구현 전에 시스템 모델을 검증할 수 있고, 잠재적인 문제를 사전에 발견하고 수정할 수 있습니다.비용 절감: 코드를 작성하고 테스트하는 것보다 UML 모델을 사용하여 시스템을 설계하고 검증하는 것이 비용이 적게 듭니다.테스트 및 검증: 시스템이 실제로 요구사항을 만족하는지 테스트하고 검증하기 위해 사용됩니다.UML 다이어그램 종류 구조 다이어그램클래스 다이어그램객체 다이어그램복합체 구조 다이어그램배치 ..
리눅스 서버에서 볼륨 사용량이 높아지는 주요 원인 중 하나는 도커 이미지의 누적입니다. 불필요한 이미지를 정리함으로써 서버의 공간을 효과적으로 관리할 수 있습니다. 사용하지 않는 도커 이미지를 삭제하는 명령어는 다음과 같습니다 모든 중지된 컨테이너의 이미지 삭제 이 명령어는 모든 중지된 컨테이너에 사용된 이미지를 삭제합니다. 실행 중인 컨테이너의 이미지는 삭제되지 않습니다. docker rmi $(docker ps -a -q) 사용되지 않는 모든 이미지 삭제 이 명령어는 사용되지 않는 모든 이미지를 삭제합니다. -a 또는 --all 플래그는 모든 사용되지 않는 이미지를 포함하라는 의미입니다. docker image prune -a 특정 이미지 삭제 이 명령어는 지정된 이미지 ID에 해당하는 이미지를 삭제..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cB1Dnb/btsAaNLSl3x/sk8fOUpIwdrUhNxosEjNeK/img.png)
지난 블로그에서 Github Actions, Nginx, Docker를 이용해서 무중단 배포에 대해 다룬 적이 있습니다 [CI/CD] github actions, nginx, docker이용해서 blue-green 무중단 배포하기1. Blue_Green 배포란? 8080 포트로 연결된 컨테이너 8081포트로 다른 다른 버전의 컨테이너 띄우기 nginx.conf 수정후 reload (업스트립 8081 수정) 8080 컨테이너 제거 새로 배포할 때마다 새로운 컨테이너들minsu20.tistory.com 현재 시스템의 단점은 주요 구성 파일들이 GitHub에서 관리되지 않고 EC2 서버에 직접 생성되어 관리된다는 것입니다. 이러한 접근 방식은 버전 관리 및 추적 면에서 비효율적일 수 있습니다. 또한, 파일 전..
Java Record의 등장 최신 프로그래밍 언어들은 간결하고 효율적인 코드 작성을 중요하게 여깁니다. 데이터를 담는 객체를 정의할 때, 이러한 현대적인 언어들이 제공하는 기능 중 하나가 바로 불변성을 가진 데이터 홀더입니다. Kotlin의 data class 가 개발자들에게 큰 인기를 끌면서, Java도 이에 대한 답변으로 record 를 제시했습니다. record 는 데이터를 운반하는 간단한 구조를 정의할 때 사용되며, 내부적으로 불변성을 가진 필드와 함께, 필수적인 메소드들을 자동으로 생성합니다. Record와 Data Class 비교 Kotlin의 data class 와 마찬가지로, Java의 record 는 개발자가 수동으로 equlas(), hashCode(), toString() 등을 정의할..
- Total
- Today
- Yesterday
- 구글로그인
- 반복자 패턴
- 브리지 패턴
- 양방향연관관계
- Iterator Pattern
- FacadePattern
- jpa
- ArrayDeque
- GithubActions
- 책임체인패턴
- idtoken
- Chain of Responsibility
- n+1
- dfs
- 컴포지트패턴
- 퍼싸드패턴
- 빌더 패턴
- 프로토타입 패턴
- 복합체 패턴
- springsecurity
- 상태 패턴
- 플라이웨이트패턴
- 책임연쇄패턴
- UML 필요성
- 메멘토 패턴
- CompositePattern
- 프록시패턴
- restapi
- Flutter
- java문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |