2021.11.15 TIL

crimy950·2021년 11월 15일
0

TIL

목록 보기
19/67

인스턴스의 여러가지 기법
Command Pattern

1번째 문단은 ICalc 인터페이스를 선언한다.
2번째 문단은 Plus 계산을 하는 class, 3번째는 Minus, 4번째는 multi 연산
각각의 class 하나하나가 하나씩의 연산을 담당하고 선언됐다.

먼저 연산결과 확인을 위해 Plus,Minus를 실행해본다.

그리고 이런 방식으로 위쪽의 l[i] 순으로 하나하나 연산을 진행하는 것을 배열화 시켜서 for 문을 활용해 배열의 data 하나씩 start에 대입하면 매크로와 같이 일련작업화해서 사용할 수 있다.
이렇게 동작 하나를 인스턴스 하나로 선언해서 반복적인 동작을 만들어내는 것을 Command Pattern 이라고 한다.

Decorator Pattern

마찬가지로 IGreet 라는 인터페이스를 정의하고, 두 문구 Hello와 Merci 를 return 하는 두 클래스와 문구의 양 옆에 # 과 *을 추가하는 class를 각각 하나씩 정의한다.
그리고 IGreet ig에 인스턴스를 겹겹이 생성해서 출력을하면
*Hello* #Hello# 와 같이 메인코드는 그대로 둔 채로 class를 변화시키거나 IGreet ig 의 대입 정보를 변화시키는것 만으로 손쉽게 다른 결과를 출력시킬 수 있다.

Wrapper Class

위의 코드처럼 , 인스턴스를 가리키는 Object t에 100이라는 int 자료형 정수값이 대입됐다. 하지만 에러가 나지 않는다.

이런 형태로 Integer 값의 인스턴스를 대입할 수도 있다.
Wrapper class 는 포인터를 대신할만큼 메모리 소모가 적은 형태의 클래스로, 정수형, Integer 형등 다양한 종류의 data를 가리킬 수 있다.

문자열의 인스턴스

문자열을 가리킬 수 있는 인스턴스로 Object 값을 갖는 Bank, String 값을 갖는 Bank2를 선언했다. 두 인스턴스 간의 차이점은 아래 코드로 확인할 수 있다. b.t 에는 어떤 인스턴스는 멤버변수로 취할 수 있지만 다시 사용하려 할때 에러코드인 String b2 = b.t 와 같이 String 형태로 그대로 가져올 수가 없다. 아래처럼 캐스팅을 해줘야한다. String의 경우는 반대로 String 형태만 멤버변수로 취하지만 다시 사용할 때는 Object, String 모두의 형태로 사용할 수 있다.
이런 두 경우의 장단점을 보완한 것이 제너릭의 사용이다.

제너릭(Generic)

제너릭은 Object와 String의 확연한 장단점을 극복하기 위해 클래스 안에서 변수 타입을 <>로 지정하여 사용할 수 있게 만든다.

위와 같이, 하나의 interface를 정의하고 필요한 변수 타입에 따라 class를 정의하면 인스턴스를 선언할 때 선택하여 변수타입에 맞춰서 사용할 수 있다.

profile
소소

0개의 댓글