풀스택 과정 day14_Java

2022.3.25(금)

디자인 패턴( SingleTon )

패키지( Package )


1. 디자인 패턴( Design Pattern )


< Static 멤버변수가 포함된 Article 클래스 >

< Article 클래스의 getter, setter >

< Article 클래스의 실행값>

1-1. 디자인 패턴이란?

- 디자인 패턴이란 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게
  풀어나갈 것인가에 대한 일종의 솔루션 같은 것이다.

- 디자인 패턴은 설계자들이 "올바른" 설계를 "빨리" 만들 수 있도록 도와준다.

1-2. SingleTon 패턴

- 프로그램 내의 여러 곳에서 반복적으로 사용되어야 하는 객체에 대해
  전역적인 범위를 갖도록 객체를 생성하고, 이 객체를 여러 곳에서 공유하기
  위한 클래스 작성 패턴

- 이러한 패턴을 통해 생성된 객체를 '싱글톤 객체'라고 한다. 

1-3. SingleTon 객체의 이점

- 프로그램의 전역에서 활용할 재료로 사용되는 공유 기능을 하나만 생성하여
  여러 곳에서 재사용함으로 해서 메모리를 효율적으로 사용할 수 있다.

- 단 한 번만 객체를 생성하면 다시 객체를 생성할 필요가 없기 때문에,
  해당 기능을 사용할 때마다 객체를 일일이 생성해야 하는 번거로움을 피할 수 있다.

1-4. 공통 기능을 포함할 클래스 안에서 스스로의 객체를 static으로 선언

- static이 적용된 자원은 메모리의 고정 영역에 생성되기 때문에,
  클래스 자체의 객체나, 그 안에 포함된 멤버변수, 메서드와는 메모리 상에서
  구별된다고 볼 수 있다. 

- 그러므로 Calc 클래스 안에 static 형태로 Calc 클래스의 객체를 정의하더라도
  코드 상의 논리적인 연관관계를 위해 하나의 파일에서 정의하는 것일 뿐,
  실제로는 Calc 클래스 자체에서 독립된 객체가 되는 것이다.
public class Calc {
	static Calc current;
} 
- Calc 클래스 이외의 여러 곳에서 new 연산자를 사용하여 객체 할당이 가능하다면
  SingleTon 이라는 개념 자체가 성립되지 않으므로, 외부에서 이 객체에 직접적인
  접근을 못하도록 은닉시킨다.
public class Calc {
	private static Calc current;
} 

1-5. 은닉된 객체를 할당하거나 메모리에서 삭제하는 기능 추가

- current 객체를 private으로 지정하였기 때문에 객체를 메모리에서 간접적으로
  할당하고 삭제하기 위한 메서드가 필요하다.

- 객체를 메모리에서 제어하기 위해서는 null을 사용한다.
public class Calc {
	private static Calc current;	// 객체 선언
	
	// 객체 할당 처리
	// 객체가 할당되지 않은 경우에만 할당하도록 하여 중복 할당을 방지한다.
	public static Calc getInstance( ) {
		if( current == null ) {
			current = new Calc( );
		} 
			
		return current;
	}

	// 객체에 null을 대입하면 메모리에서 삭제된다.
	public static void freeInstance( ) {
		current = null;
	}
} 

1-6. new 연산자를 사용한 객체 할당 금지하기

- 기본 생성자를 private 형태로 정의하면 객체 생성자가 은닉 처리되어 외부에서
  new 연산자를 사용한 객체 할당이 금지된다.
public class Calc {
	private static Calc current;	// 객체 선언
	
	// 객체 할당 처리
	// 객체가 할당되지 않은 경우에만 할당하도록 하여 중복 할당을 방지한다.
	public static Calc getInstance( ) {
		if( current == null ) {
			current = new Calc( );
		} 
			
		return current;
	}

	// 객체에 null을 대입하면 메모리에서 삭제된다.
	public static void freeInstance( ) {
		current = null;
	}

	private Calc( ) {
		super( );
	}
} 


< SingleTon 구현 >

< SingleTon의 실행 >


2. 패키지( Package )

2-1. java Package

- 패키지 -> 클래스에 대한 묶음 단위

- 클래스를 용도별이나, 기능별로 그룹화 한 것을 말한다.
  소스코드는 폴더로 분류된 형태로 존재하게 된다.

- 서로 다른 패키지에 속해 있다면, 다른 클래스와 이름이 동일하더라도
  충돌이 발생하지 않는다.( 서로 다른 폴더에는 이름이 같은 파일들이 존재할 수 있다. )

2-2. 패키지 추가하기

- 패키지 이름의 일반적인 정의 형식

-> 회사 도메인 이름의 역순, 프로젝트 이름의 소문자

-> com.koreait.shop.user 

-> com.koreait.shop.article

좋은 웹페이지 즐겨찾기