0303 Review

KDU·2022년 3월 3일

자바공부

목록 보기
12/17

singletone

 static 싱글톤 메서드를 클래스 내부에서 static인스턴스로 생성하여 반복 사용시 반응속도를 늘려준다. 싱글톤을 통해 만들어진 인스턴스의 값을 유지한 채 클래스끼리 공유하는데 유용하다.
 그 외 멀티쓰레드 환경에서의 동시성을 잡아줘야 하는 문제, 각각 클래스마다 별도로 디버깅을 할때의 난감함 등등의 문제가 존재하고, 그 외에도 개발 원칙적인 문제도 존재한다. 자세한 사항은 아래 링크를 참고하자.
싱글톤(Singleton) 패턴이란?

Override

 Override할때의 규칙은 접근제어자와 리턴값, 메서드 이름, 파라미터 내부 데이터타입까지 동일하게 맞춰줘야 한다. 바꿀수 있는 내용은 오직 메서드 안의 내용이다.

다형성(Polymorphism)

 extends를 사용해 자식클래스는 부모클래스의 변수와 메서드를 상속받아 사용할 수 있다.
 다형성의 가장 좋은 점은 유지보수인데, 유지보수가 용이한 부모 클래스를 잘 만들어두기만 하면 자식 클래스가 추가되었을때 다른 파일들을 건드리지 않고도 손쉽게 수정과 추가가 가능하다.

예를 들어, GPU클래스가 있다고 하자.

package chap10.poly;

public class GPU {
	void process() {
		System.out.println("basic GPU Process");
	}
}

이 GPU클래스를 상속받는 Nvidia와 AMD두 클래스가 있다.

package chap10.poly;

public class Nvidia extends GPU{
	@Override
	void process() {
		System.out.println("Nvidia GPU Process");
	}
}
package chap10.poly;

public class AMD extends GPU{
	@Override
	void process() {
		System.out.println("AMD GPU Process");
	}
}

다형성을 활용해 이런 방식으로 실행할 수 있다.

package chap10.poly;

public class Computer {

	public static void main(String[] args) {
		
		//부모형으로 인스턴스를 생성하고 자식을 넣는다.
		GPU graphic = new Nvidia();
		//그렇게 되면 오버라이딩 된 메서드가 출력.
		graphic.process();
		
		//자식을 온전히 사용하고 싶으면 명시적 형변환(부모로의 형변환은 자동)
		GPU graphic2 = new AMD();
		AMD graphicAMD = (AMD)graphic2;
		graphicAMD.process();
		
		//부모형으로 생성한 인스턴스 또한 언제든지 자식 클래스로 변경할 수 있다.
        //이 부분이 위에 설명한 유지보수의 유리함이다.
		System.out.println("===자식형변환===");
		GPU graphic3 = new GPU();
		graphic3.process();
		//Nvidia형변환
		graphic3 = new Nvidia();
		graphic3.process();
		//AMD형변환
		graphic3 = new AMD();
		graphic3.process();
		
		//간단하게 배열에도 넣을 수 있다.
		System.out.println("===배열활용===");
		GPU[] gpuArr = {new GPU(),new Nvidia(),new AMD()};
		for(GPU g : gpuArr) {
			g.process();
		}
		
	}

}

그 외

 싱글톤 패턴뿐만 아니라 최대한 많은 디자인 패턴들을 접하고, 유용한 공식들을 습득해야 한다.

profile
의문을 즐깁니다.

0개의 댓글