Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

우주코딩

접근 권한, factory-method, singleton, 추상화 본문

자바 본 강의

접근 권한, factory-method, singleton, 추상화

우주코딩 2021. 8. 3. 16:11

접근 권한

private : 클래스 안에서만 접근 가능
(default) : private + 같은 패키지 소속
protected : (default) + 서브 클래스로 만든 변수인 경우 서브 클래스에서 접근 가능
public : 모두 접근 가능

factory-method

생성자를 private으로 선언하면 외부에서 이 클래스의 인스턴스를 생성하는 것을 막을 수 있다.
private Car() {}

예(1) 인스턴스 생성과정이 복잡할 경우에 직접 인스턴스를 생성하기 보다는 인스턴스를 생성해주는 메서드를 사용하여 인스턴스를 만드는 것이 유지보수할 때 편하다.
=> 즉 인스턴스를 생성해 주는 메서드를 통해 인스턴스를 생성하면 인스턴스를 사용하고픈 개발자는 코드가 간결해진다

이런 설계 방식이 "factory method" 설계 패턴이다.
공장처럼 만들어준다고해서 팩토리 메서드라고한다.

singleton

예(2) 인스턴스를 오직 한개만 생성해야 할 경우 인스턴스를 여러개 생성할 필요가 없는 경우에 생성자를 private 로 막는다.
=> getInstance() 스태틱 메서드를 통해 인스턴스를 한개만 만들어 사용한다. 이런 설계 기법을 "singleton" 패턴이라 부른다.

이 두 디자인 패턴의 시작은 생성자를 private 으로 막는 것이다!

추상화

추상화란?

업무를 정의한 것
데이터를 정의한 것
클래스를 정의/설계한 것 또한 추상화라고한다.
즉 실세계의 객체(예: 사람, 물건, 업무, 개념 등)를 컴퓨터에서 다룰 수 있도록 클래스로 정의하는 행위를 "추상화"라 부른다.
이를 방지하지 위해서는 클래스 목적(추상화 목적)에 맞춰 인스턴스 변수에 무효한 값이 들어가지 않도록 해야 한다.
그럴 목적으로 만든 문법이 캡슐화이다.

"캡슐화"? 추상화가 무너지지 않도록 인스턴스 멤버(변수와 메서드)의 접근을 제어하는 문법이다.

"추상화"? 실세계의 객체를 프로그램에서 다룰 수 있도록 클래스로 정의하는 것.
추상화 기법?

  • 데이터 타입을 정의
  • 유관 메서드를 묶기
Comments