일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MySQL
- Semaphore
- Spring
- cloud native java
- java
- Algorithm
- 코틀린
- 자바
- 헬름
- 클라우드 네이티브 자바
- ansible
- devops
- decorator 패턴
- spring microservice
- Kotlin
- 쿠버네티스
- cloud native
- nGrinder
- CRD
- Microservice
- 클라우드 네이티브
- kubernetes
- 익명클래스
- 동기화
- 마이크로서비스
- ingress
- MSA
- Adapter 패턴
- Stress test
- 머신러닝
- Today
- Total
목록전체 글 (86)
카샤의 만개시기
takeIf 함수 람다식이 true이면 결과값을 반환. public inline fun T.takeIf(predicate: (T) -> Boolean): T? = if (predicate(this)) this else nulltakeUnless 함수 람다식이 false이면 결과값을 반환. public inline fun T.takeIf(predicate: (T) -> Boolean): T? = if (!predicate(this)) this else null예제 val user = "KaSha" val str = "Sha" var index = 0 index = user.indexOf(str).takeIf { it >= 0 } ?: -1 index = user.indexOf(str).takeUnless ..
코틀린의 스코프 함수는 다음 5가지 함수를 제공하며 기본적으로 매우 비슷하다. apply, with, let, also, run 추가적으로 use 함수도 제공한다. 스코프 함수는 receiver와 code block을 받아 제공된 코드 블럭을 제공된 수신자에서 실행한다. 자바의 함수형 인터페이스(Funtional Interface)와 비슷하다고 보면 된다. 함수 이름 람다식의 접근 방법 반환 방법 let it block 결과 also it T caller (it) apply this T caller (this) run this block 결과 with this block 결과 let 함수 public inline fun T.let(block: (T) -> R): R { ... return block(th..
제네릭은 클래스 내부에서 사용할 자료형을 컴파일 시간에 검사하여 인스턴스를 생성할 때 확정하는 방법입니다. 제네릭을 사용하면 객체의 자료형을 컴파일할 때 체크하기 때문에 객체 자료형의 안정성을 높이고, 형 변환의 번거로움이 줄어듭니다. 제네릭을 사용하기 위해서는 앵글 브래킷() 사이에 타입 매개변수를 넣어 선언합니다. 다수 조건의 타입 매개변수 제한 매개변수의 타입을 제한하기 위해서는 where 키워드를 사용하여 지정된 제한을 모두 포함하는 경우에만 허용하도록 할 수 있습니다. 다음 예제는 a와 b에 들어갈 자료형을 Number이면서 Comparable을 구현하고 있는 타입으로 제한하고 있습니다. fun getMax(a: T, b: T): T where T:Number, T:Comparable { ret..
Command 패턴은 명령(command)를 객체화하여 특정 객체에 명령을 내리는 패턴이다. Command 패턴은 Invoker(발동자), Command(명령), Receiver(수신자)로 구성된다. Invoker(발동자): 커멘드을 가지고 있으며 수신자에게 커멘드를 요청한다 Command(명령): 특정 작업 Receiver(수신자): 발동자로부터 수신한 커멘드를 수행한다. 예제 스위치로 전등을 껏다 키는 예제를 살펴보자. 스위치는 Invoker가 되고, Light는 Receiver가 된다. 마지막으로 On/Off 명령은 Command가 된다. public interface Command { void execute(); }// Command (명령) public class LightOffCommand i..
Decorator 패턴은 인터페이스를 바꾸지 않고 책임(기능)만 추가하는 것이다. Adapter 패턴은 인터페이스를 변경해서 클라이언트에서 필요로 하는 인터페이스로 적응시키기 위한 용도로써 호환성을 위해 사용된다. 결론 decorator 패턴은 기존의 객체를 장식하는데 사용하고 adapter 패턴은 새로운 인터페이스를 추가하는 용도 링크 Decorator 패턴 : https://skasha.tistory.com/65 Adapter 패턴 : https://skasha.tistory.com/66
데코레이터 패턴은 인터페이스를 바꾸지 않고 책임(기능)만 추가하여 확장하는 패턴이다. 대표적인 예제로는 Reader와 BufferedReader가 있다. BufferedReader는 Reader 유틸에 버퍼의 기능을 확장한 것이다. 우리는 글자를 꾸미는 예제를 만들어보자. public interface Print { String print(); }public class OriginPrint implements Print { @Override public String print() { return "design pattern"; } }Print 인터페이스를 상속받아 design pattern을 출력하는 print()함수를 만들었다. public class StarPrint implements Print {..
어댑터 패턴은 인터페이스를 변경해서 클라이언트에서 필요로 하는 인터페이스로 적응시키기 위한 용도로 사용됩니다. (호환성) 안드로이드 개발을 할때 어댑터 패턴을 많이 사용하기 때문에 예제를 리스트뷰로 준비하였습니다. 예제의 요구사항은 기존의 ListView를 수직 혹은 평행으로 스크롤이 가능한 리스트뷰로 확장 하는 ListView를 만드는 것입니다. public class ListView { public void printView(String str) { System.out.println(str); } }view를 print하는 기존 기능에 충실한 listview가 있다. public interface Scroller { void scroll(); }그리고 스크롤 기능을 구현하도록 강제하는 인터페이스를 만..
GoF 책에서 퍼사드 패턴에 대하여 다음과 같이 소개합니다. 하위 시스템의 인터페이스 세트에 일관된 인터페이스를 제공하는 것또한 헤드 퍼스트 디자인 책에서는 다음과 같이 소개합니다. 퍼사드 패턴은 하위 시스템의 복잡도를 감추는 동시에 그 전체 기능을 사용하기 쉬운 인터페이스로 제공한다이해를 돕기 위해 예제를 통해 알아보자. 나는 오늘 영화관에서 32만원의 수익을 낸 직원에게서, 좌석이 100여 좌석이 있고 가격은 10000원인 '어벤져스' 영화 티켓을 구입하여 상영관에 입장하여 영화를 보았다.마치 고등학생 때 풀던 영어 지문처럼 필요 이상의 내용들이 들어가 있다. 우리가 알고자 하는건 간단한다. 나는 '어벤져스' 영화를 보았다.퍼사드 패턴은 위의 지문을 아래 지문처럼 만드는것과 같다. 영화를 보는 행동에..